Swift推送通知委托调试模式行为

时间:2017-10-13 18:53:38

标签: ios iphone swift apple-push-notifications

我已将APNS连接到我的应用程序。

问题在于系统委托didReceiveRemoteNotification的不同行为。它仅在调试器附加到应用程序时才能正常工作,否则,当应用程序处于后台状态时,不会调用它。例如,如果测试电话通过USB电缆连接到mac并且正在调试app,则会调用该委托。电缆断开后,代理人不再被调用。

问题是app状态(调试与否)对SELECT y.fk_id FROM (SELECT x.fk_id, COUNT(x.type_id) AS count, SUM(x.type_id) AS sum FROM mytable x GROUP BY (x.fk_id)) AS y WHERE y.count = 3 AND y.sum = 6 行为的影响。 (IOS 10和11)

要检测委托电话,我会发出后端请求,并确定呼叫检测没有问题。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,花了很多时间寻找解决方案。我找到了workaround mentioned in the Apple forums

使您处理推送通知的类成为UNUserNotificationCenter

的委托
if #available(iOS 10.0, *) {
    UNUserNotificationCenter.current().delegate = self
}

然后实现willPresent notification: UNNotification方法

@available(iOS 10.0, *)
extension APNSService: UNUserNotificationCenterDelegate {
    func userNotificationCenter(_ center: UNUserNotificationCenter, willPresent notification: UNNotification, withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void) {
        Log.debug?.message("Received push in foreground through UserNotificationCenter, calling Inbox.incrementalSync")
        ...        
        completionHandler([])
    }
}