因为工作忙经常忘记事情,但是用日历记录这些小事情感觉有点“重”,用 iMessage 刚刚好。
记录遇到的问题,也算是折腾了好久。

#通过命令行发送短信

理论上是提供一种发消息手段,所幸iMessage真的不像微信那样给你出各种难题。

1
2
3
4
5
6
7
on run {targetBuddyPhone, targetMessage}
tell application "Messages"
set targetService to 1st service whose service type = iMessage
set targetBuddy to buddy targetBuddyPhone of targetService
send targetMessage to targetBuddy
end tell
end run
1
2
3
/usr/bin/osascript /Users/onns/Documents/imessage.scpt $1 $2
# $1 是手机号
# $2 是消息内容

#定时执行

这一步就会有问题,问题的原因来自于 cron 的运行环境和我们在 shell 中的不同(我猜测),多方查询之后依然没有找到解决方案,如果有人找到了请告诉我!感谢!

然后就去查了一下解决办法,大致有两种:

  1. 用苹果提出的cron替代方案launchd
  2. 自己创建一个程序维护定时任务。

很显然第一个方便些,毕竟第二个每次还要自己启动。

#分类

文件夹 用途
/系统/资源库/LaunchDaemons Apple 提供的系统守护进程
/系统/资源库/LaunchAgents Apple 提供的基于每个用户且所有用户适用的代理
/资源库/LaunchDaemons 第三方系统守护进程
/资源库/LaunchAgents 基于每个用户且所有用户适用的第三方代理
~/资源库/LaunchAgents 仅适用于登录用户的第三方代理

#实现

#创建脚本

1
2
cd ~/Library/LaunchAgents
vi xyz.onns.notification.plist
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>xyz.onns.notification</string>
<key>ProgramArguments</key>
<array>
<string>/Users/onns/Downloads/github/notification/notification</string>
</array>
<key>StartInterval</key>
<integer>60</integer>
</dict>
</plist>

#生效脚本

1
launchctl load -w xyz.onns.notification.plist

#参考链接