Swift:在没有涉及用户活动的情况下调用didReceiveRemoteNotification(使用Houston ruby​​ gem)

时间:2014-11-02 19:14:43

标签: ios ruby swift apple-push-notifications

我写了一个小的快速应用程序。我已成功配置远程通知服务。这是代码

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) {
    println("received notification")
    var remoteServer = RemoteServer()
    remoteServer.sendDataToServer { (success) -> () in
         completionHandler(UIBackgroundFetchResult.NewData)
    }
}

现在,我正在使用Houston ruby​​ gem发送通知。看起来像这样

require 'houston'
APN = Houston::Client.production
APN.certificate = File.read("production_certificate.pem")

token = "token here"
notification = Houston::Notification.new(device: token)
notification.content_available = true
notification.alert = "test"
notification.badge = 0
APN.push(notification)

我可以在锁定屏幕上成功查看该消息。但是当我滑动通知时,它会打开应用程序,这就是didReceiveRemoteNotification方法被调用的时候。

我想知道是否有办法在用户不必刷卡通知的情况下关闭didReceiveRemoteNotification? (几乎不需要用户活动)?

我尝试将警报设置为nil。但是,由于无法检测到任何用户活动,didReceiveRemoteNotification永远不会被解雇。

我该如何处理这种情况?我应该使用performFetchWithCompletionHandler,但是如何从远程服务器启动它?

更新:当应用程序当前打开时,didReceiveRemoteNotification确实会被发送出去,但一旦设备被锁定,它就会被发送出去。同样没有被召唤。

由于

0 个答案:

没有答案