网上有很多php,java语言的ios的push,但公司用ruby语言做项目,只好自己写了。我在这做一个简单的例子,已备以后项目中用到,直接拿来用,放进自己的项目代码中,稍作修改即可。
说明:我编写的只是服务器端的代码,认证文件xxx.pem文件网上有很多例子我就不介绍了(搜索“IOS push会有很多资料 ”)
准备工作: 我的环境是Ubuntu系统,我的gem已经安装好了,所用插件有apns和houston所以先安装这两个插件。
第一步: 安装apns 命令#sudo gem install apns (默认安装最新版本)
第二步:安装houston 命令#sudo gem install houston -version=0.3.0 (我的gem 版本为1.3.7所以安装个底版本,更好的兼容)
如果这两个插件都安装好了,其他就是代码部分了,直接贴出完整的代码:
apply_url = "apn://gateway.sandbox.push.apple.com:2195"
certificate = File.read("xxx.pem")
passphrase = "xxxxxx"
connection = Houston::Connection.new(apply_url,certificate, passphrase)
connection.open
stoken = "6601ed2c258614081f7a023ac484c7a9a84ddgfdsdfse027"
notification = Houston::Notification.new(:token=>token )
notification.alert = "wo shi kuange"
notification.sound="default"
notification.badge=1
connection.write(notification.message)
connection.close
说明:如果调用了这个代码块,他就会做这些事:连接APNS服务器(苹果用于推送消息的服务器),发送一条有声音提示的消息到stoken="xxxxx"标记的这个手机,内容为“wo shi kuange” ,最后关闭连接
代码解释:(1)apply_url :这个是开发者模式下的连接地址,投入生产者模式时换成"apn://gateway.push.apple.com:2195"
(2)certificate = File.read("xxx.pem")xxx.pem 是制作的认证文件相当于你想进入房间要有钥匙一样,这就是那把钥匙
(3)passphrase就是xxx.pem文件的密码
(4)stoken 是苹果手机的设备编号或称为设备ID都行
(5)alert 是消息的内容
(6)sound 是否有声音提示(默认是有的)
(7)badge消息数有几条
放在项目代码中的例子也贴出来,(这是一个评论提示的方法)以供参考吧
#推送评论的公共方法
def push_comment_device(user_id,text)
apply_url = "apn://gateway.sandbox.push.apple.com:2195"
certificate = File.read("xxxxx.pem")
passphrase = "xxxx"
connection = Houston::Connection.new(apply_url,certificate, passphrase)
connection.open
puts "评论的IOS推送方法已经执行了"
#调用获取该用户的所有设备id的方法
user_id =user_id
#@text 评论的内容可以加入到提示信息中,若加注意内容长度的截取,现在先不做处理,
@text=text
@device_push_user=DevicePush.find_all_by_user_id(user_id)
@device_push_user.each do |device_push_user|
device_token= device_push_user.device_id
device_language= device_push_user.local_language.to_s
puts device_token
puts device_language
notification = Houston::Notification.new(:token=>device_token ) #向传值的这台设备发送消息,其后是传值的具体内容
if device_language=="en"
notification.alert = "You received a new comment"
elsif device_language=="ja"
notification.alert = "新しいコメントが1件届いています"
else
notification.alert = "您有1条新评论"
end
notification.sound="default"
notification.badge=1
connection.write(notification.message)
end
connection.close
end
参考文献:https://github.com/nomad/houston
https://github.com/jpoz/APNS