推送通知在杂货店不起作用
push notification doesn't work in grocer
我将通过 rails 后端向 ios 设备发送通知。
我已经将 grocer gem 添加到 Gemfile 中,然后将其安装在项目中。
gem 'grocer'
我打算在后台模式下发送通知。所以我创建了 resque 作业并像这样在 app/jobs/notificationsender.rb 中添加了杂货商逻辑。
def self.perform(language)
@lang = language
# Thread.new do
while true
begin
pusher = Grocer.pusher(certificate: "#{Rails.root}/lib/notification/cer.pem", # required
passphrase: "llvc", # optional
gateway: "gateway.sandbox.push.apple.com", # optional
port: 2195, #optional
retries: 3)
feedback = Grocer.feedback( certificate: "#{Rails.root}/lib/notification/cer.pem", # required
passphrase: "llvc",
gateway: "feedback.sandbox.push.apple.com",
port: 2196,
retries: 3)
note = Grocer::Notification.new(
device_token: device_token,
alert: message,
sound: 'default',
badge: 0,
expiry: Time.now + 60*60,
content_available: true,
custom: {
"linkname": linkname,
"linkurl": linkurl
}
)
feedback.each do |attempt|
puts "Device #{attempt.device_token} failed at #{attempt.timestamp}"
end
pusher.push(note)
rescue Exception => e
puts e.class
puts e
end
sleep(5)
end #while
end
我从 iphone 获得了一个设备令牌并将其发送到后端。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
_deviceToken = deviceToken;
// Store the deviceToken in the current installation and save it to Parse.
if (currentInstallation == nil) {
currentInstallation = [[BSGInstallation alloc] init];
}
currentInstallation.delegate = self;
[currentInstallation setDeviceTokenFromData:deviceToken];
[currentInstallation saveInBackground];
}
我下载了 apple pushnotification 开发证书并从中生成了 p12,然后从命令行创建了 cer.pem 文件。
我用应用程序开发 cer 签署了 ios 项目,用于调试和分发,用于发布和分配的开发配置。当然,我在配置中正确添加了设备标识符。
在构建 ios、后端、resque 作业后,我在 iPhone 中每 5 秒收到一次通知。我在 iPad 上安装了该应用程序。但 iPad 上没有收到通知。当然 iphone 和 ipad 的 id 都被正确注册了。我确认 iphone 和 ipad 的设备令牌已在 Grocer::notification.new()
上传递
但通知在 iPad 中不起作用。所以我重置了服务器并重新安装在每台设备上。起初我测试了 iPad。结果是一样的。然后我转到 iPhone。该系统在 iphone 中也无法正常工作。在它起作用之前。很奇怪。
所以我想知道以下内容。
1) iphone或ipad收到通知的原因。我想知道尽可能多的分支,以便我可以按照步骤快速检测原因。
2) 我可以在 APNS 之前查看通知到达吗?
感谢您阅读我的详细描述。
IOS 和 rails 代码没有错误。
我已经在 ios 中进行了代码签名,并通过 url.
创建了一个 pem 文件
https://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
按照 github 教程操作时出现错误。
谢谢
我将通过 rails 后端向 ios 设备发送通知。
我已经将 grocer gem 添加到 Gemfile 中,然后将其安装在项目中。
gem 'grocer'
我打算在后台模式下发送通知。所以我创建了 resque 作业并像这样在 app/jobs/notificationsender.rb 中添加了杂货商逻辑。
def self.perform(language)
@lang = language
# Thread.new do
while true
begin
pusher = Grocer.pusher(certificate: "#{Rails.root}/lib/notification/cer.pem", # required
passphrase: "llvc", # optional
gateway: "gateway.sandbox.push.apple.com", # optional
port: 2195, #optional
retries: 3)
feedback = Grocer.feedback( certificate: "#{Rails.root}/lib/notification/cer.pem", # required
passphrase: "llvc",
gateway: "feedback.sandbox.push.apple.com",
port: 2196,
retries: 3)
note = Grocer::Notification.new(
device_token: device_token,
alert: message,
sound: 'default',
badge: 0,
expiry: Time.now + 60*60,
content_available: true,
custom: {
"linkname": linkname,
"linkurl": linkurl
}
)
feedback.each do |attempt|
puts "Device #{attempt.device_token} failed at #{attempt.timestamp}"
end
pusher.push(note)
rescue Exception => e
puts e.class
puts e
end
sleep(5)
end #while
end
我从 iphone 获得了一个设备令牌并将其发送到后端。
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
_deviceToken = deviceToken;
// Store the deviceToken in the current installation and save it to Parse.
if (currentInstallation == nil) {
currentInstallation = [[BSGInstallation alloc] init];
}
currentInstallation.delegate = self;
[currentInstallation setDeviceTokenFromData:deviceToken];
[currentInstallation saveInBackground];
}
我下载了 apple pushnotification 开发证书并从中生成了 p12,然后从命令行创建了 cer.pem 文件。
我用应用程序开发 cer 签署了 ios 项目,用于调试和分发,用于发布和分配的开发配置。当然,我在配置中正确添加了设备标识符。
在构建 ios、后端、resque 作业后,我在 iPhone 中每 5 秒收到一次通知。我在 iPad 上安装了该应用程序。但 iPad 上没有收到通知。当然 iphone 和 ipad 的 id 都被正确注册了。我确认 iphone 和 ipad 的设备令牌已在 Grocer::notification.new()
上传递
但通知在 iPad 中不起作用。所以我重置了服务器并重新安装在每台设备上。起初我测试了 iPad。结果是一样的。然后我转到 iPhone。该系统在 iphone 中也无法正常工作。在它起作用之前。很奇怪。
所以我想知道以下内容。
1) iphone或ipad收到通知的原因。我想知道尽可能多的分支,以便我可以按照步骤快速检测原因。
2) 我可以在 APNS 之前查看通知到达吗?
感谢您阅读我的详细描述。
IOS 和 rails 代码没有错误。
我已经在 ios 中进行了代码签名,并通过 url.
创建了一个 pem 文件
https://www.raywenderlich.com/32960/apple-push-notification-services-in-ios-6-tutorial-part-1
按照 github 教程操作时出现错误。
谢谢