我有一个应用程序,我正在尝试接收和处理SILENT推送通知.
我正在注册APNs如下:
UNUserNotificationCenter.currentNotificationCenter().delegate = self UNUserNotificationCenter.currentNotificationCenter().requestAuthorizationWithOptions([.Badge,.Sound,.Alert]) {(granted,error) in if granted { application.registerForRemoteNotifications() } }
实现:
func userNotificationCenter(center: UNUserNotificationCenter,didReceiveNotificationResponse response: UNNotificationResponse,withCompletionHandler completionHandler: () -> Void) { // Handle notification } func userNotificationCenter(center: UNUserNotificationCenter,willPresentNotification notification: UNNotification,withCompletionHandler completionHandler: (UNNotificationPresentationOptions) -> Void) { // Handle notification }
该应用程序具有UIBackgroundModes提取和远程通知
APN内容如下所示:
{ "aps":{ "content-available":1,"badge":0 },"action":"shareDelete","shareId":633 }
当应用程序处于前台时,当收到通知时,userNotificationCenter(center:withCompletionHandler:willPresentNotification)将被触发,但是当应用程序背景时,没有任何反应.
我可以看到通过更改徽章号码收到APN,但在应用程序中没有触发任何内容.
我失踪了什么
(也在Apple开发论坛上询问)
解决方法
方法
func userNotificationCenter(center: UNUserNotificationCenter,withCompletionHandler completionHandler: () -> Void) { // Handle notification }
Called to let your app know which action was selected by the user for a given notification.
你需要实现旧的方法
func application(_ application: UIApplication,didReceiveRemoteNotification userInfo: [AnyHashable : Any],fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void) { }