- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个项目需要从服务器向设备发送通知。我不知道如何以及从哪里开始(首先创建表或其他),因为我是 Ruby on Rails 的新手。我已经按照 apn_sender 教程进行操作,但它不起作用并且总是在开始时出错。是否有为 Rails 3 创建 apn_sender 的完整教程?
谢谢
最佳答案
我也一直在研究 apn_sender 问题,因为我喜欢 Apple 推送通知支持看起来非常强大。但是,该项目已被放弃,现在落后于最新的 3 系列 rails 。我已经让系统按如下方式工作。
gem 'apn_sender', :require => 'apn'
gem 'daemons'
gem 'resque', '1.20.0'
gem 'resque-access_worker_from_job'
1.20 后 Resque 中的信号处理发生了变化,因此您必须使用较旧的 1.20.0。守护进程本应一直是一项要求,但从未明确出现在 gem 规范中。
#!/usr/bin/env ruby
# Daemons sets pwd to /, so we have to explicitly set RAILS_ROOT
RAILS_ROOT = File.expand_path(File.join(File.dirname(__FILE__), '..'))
require 'rubygems'
require 'apn'
require 'apn/sender_daemon'
APN::SenderDaemon.new(ARGV).daemonize
检索自 here.未生成 apn_sender 脚本的原因是生成器脚本需要针对 3 系列 rails 进行更新。
./script/apn_sender --environment=production --verbose start
当启动环境时,生产值可能是您想要的,因为 ad_hoc 和发布版本都使用生产证书。
This fork github上已经修正了一些rails 3的问题,但是resque的版本问题还是需要明确解决。
This website展示了如何绕过守护进程发送消息。他将 token 存储为 base64 编码的字符串,这种字符串既漂亮又紧凑。 apn_sender 框架中设备字符串的格式是十六进制字符串,格式如下:deadbeef 0a1b2cdf deadbeef 0a1b2cdf deadbeef 0a1b2cdf deadbeef 0a1b2cdf
。空格可选。
require 'base64'
ios_device_token = User.where(username: 'Cameron').first.ios_device_token
token = Base64.decode64(ios_device_token).unpack('H*').first.scan(/\w{8}/).join(' ')
notification = APN::Notification.new(token, { alert: 'Hello, World!', sound: true, badge: 99 })
sender = APN::Sender.new(verbose: true, environment: 'production')
sender.send_to_apple(notification)
# Unpacking code borrowed from http://github.com/jpoz/APNS/blob/master/lib/apns/core.rb
while bunch = socket.read(38) # Read data from the socket
f = bunch.strip.unpack('N1n1H140')
feedback << APN::FeedbackItem.new(Time.at(f[0]), f[2])
end
一个版本的代码缺少 38,导致反馈服务返回错误的 token 字符串
如果您计划将 Ruby 开发提升到一个新的水平,您还应该考虑像 RubyMine 这样的 IDE因为它让一切变得如此简单。
关于ios - apn_sender 和 Rails 3,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13949624/
我已经使用本教程作为指导,设置了 Rails 应用程序以将推送通知发送到我的 iPhone 应用程序: http://blog.thefrontiergroup.com.au/2011/05/send
我有一个项目需要从服务器向设备发送通知。我不知道如何以及从哪里开始(首先创建表或其他),因为我是 Ruby on Rails 的新手。我已经按照 apn_sender 教程进行操作,但它不起作用并且总
我是一名优秀的程序员,十分优秀!