Ruby语言实现IOS的push推送功能

Ruby语言实现IOS的push推送功能 

  网上有很多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



 

你可能感兴趣的:(Ruby,ruby,apns,ios,服务器,苹果)