我有一个应用程序,我正在尝试接收和处理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) {
- }