推送通知在杂货店不起作用

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 教程操作时出现错误。 谢谢