iMessage介绍
iMessage是苹果设备(iPad、iPhone、iPod touch)自带的免费信息发送应用。它的信息通过网络发送,不同于运营商短信。目前iMessage日活跃用户1.9亿,日发送约20亿条。
iMessage优势
iMessage与传统短信不同,具有以下优势:
- 目标人群明确,均为苹果用户,消费能力较强
- 文字数量不限,同时还可以添加表情和图片
- 可以添加网址、下载链接等,用户可以直接通过手机访问
- 不会被手机安全卫士拦截
- 转发就像手机短信一样方便
- 无发送成本
- 送达终端的概率极高
iMessage推广技术实现
群发iMessage主要需要攻破两个技术难点,一个是iMessage账号的获取,另一个是群发iMessage。
iMessage账号获取
iMessage账号目前获取的方法主要是扫描手机号码。扫描手机号码可以通过代码自动扫描,也可以通过人工筛选。通过代码自动扫描本人暂未发现很好的方法,建议大家可以从以下两方面着手:
1.编写AppleScript脚本控制Mac OS自带的iMessage客户端进行验证,类似于群发iMessage。发送一条iMessage之后,如果捕获到发送失败的异常则不是iMessage账号
2.研究iOS系统中Message framework中的私有api,通过私有api进行验证
要进行人工筛选,也可以通过Mac OS自带的iMessage客户端。方法是编写程序,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。其中红色表示不是iMessage账号,蓝色表示iMessage账号以及未检验的账号。如图:
检验过程中有可能会出现停止的现象,可以全选所有号码后,剪切再粘贴即可继续检验。
iMessage群发
检验完所有账号后,可以从中选取出iMessage账号进行群发。群发有两个方法,一个还是通过iMessage客户端,另一个是通过AppleScript脚本控制iMessage客户端发送。
通过iMessage客户端发送,可直接将号码粘贴至地址栏,填写内容,发送即可。
通过ApplseScript控制iMessage客户端的脚本如下:
[javascript] view plain copy print ?
- tell application "Messages"
- set csvData to read "/Users/xxxx/Desktop/test.csv"
- set csvEntries to paragraphs of csvData
- repeat with i from 1 to count csvEntries
- set phone to (csvEntries's item i)'s text
- set myid to get id of first service
- set theBuddy to buddy phone of service id myid
- send "今天北京晴,气温13到27度;周二晴,气温11到26度,北风3-4级;周三晴,气温11到24度,微风<3级" to theBuddy
- end repeat
- end tell
tell application "Messages"
set csvData to read "/Users/xxxx/Desktop/test.csv"
set csvEntries to paragraphs of csvData
repeat with i from 1 to count csvEntries
set phone to (csvEntries's item i)'s text
set myid to get id of first service
set theBuddy to buddy phone of service id myid
send "今天北京晴,气温13到27度;周二晴,气温11到26度,北风3-4级;周三晴,气温11到24度,微风<3级" to theBuddy
end repeat
end tell
以上代码可从一个csv文件中读取出iMessage账号,并通过iMessage客户端逐个发送iMessage消息。
需要注意如下问题:
1.由于该脚本是控制iMessage客户端进行发送,所以必须在MacOS 10.8以上(10.7系统中的iMessage Beta版本已无法使用)的系统中运行,同时开启iMessage程序。
2.该脚本在发送iMessage时并不是后台发送,所以当发送量很大时,会导致iMessage客户端运行缓慢,甚至无法开启。可通过清空所有已发送的iMessage或注销账号解决。
3.通过脚本发送的iMessage账号必须是在当前iMessage客户端中检验过的,否则会报“不能获得“buddy id "C0B35E7F-A0FB-49E1-BDD7-C867BC06D920:+86136xxxx0000"”。
转载自:
http://blog.csdn.net/zhaoxy_thu/article/details/9255165