为啥在 iOS10 上滑动推送通知功能不运行?

Posted

技术标签:

【中文标题】为啥在 iOS10 上滑动推送通知功能不运行?【英文标题】:Why on iOS10 on swipe on a push notification function does not run?为什么在 iOS10 上滑动推送通知功能不运行? 【发布时间】:2016-12-11 12:38:08 【问题描述】:

为什么在ios10上滑动推送通知didReceiveRemoteNotification功能不运行?

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject],
                 fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) 
    // If you are receiving a notification message while your app is in the background,
    // this callback will not be fired till the user taps on the notification launching the application.

我在这个函数上设置了断点,后来当我在屏幕锁定时收到推送通知时,我滑动它打开推送通知,此时应该触发这个函数。但事实并非如此。

怎么了?还是 iOS10 发生了一些变化?

【问题讨论】:

【参考方案1】:

didReceiveRemoteNotification 代理在应用程序在前台运行时收到通知时被调用。当用户在主屏幕上滑动通知时,appDelegate didFinishLaunchingWithOptions 被调用,通知作为数据对象。

【讨论】:

那么当用户滑动打开通知时,我应该把我的代码放在哪里? 你应该检查didFinishLaunchingWithOptions 方法中的启动选项 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions if (launchOptions) //launchOptions is not nil NSDictionary *userInfo = [launchOptions valueForKey:UIApplicationLaunchOptionsRemoteNotificationKey]; NSDictionary *apsInfo = [userInfo objectForKey:@"aps"]; if (apsInfo) // 启动所需的 viewController return YES; 【参考方案2】:

我认为与推送通知的每次交互都是在 didrecevieremotenotification 方法中处理的,您在应用程序中有状态知道在应用程序中收到消息还是用户单击通知,我认为如果用户滑动到 dissmis,您将无法与通知交互该通知,如果他打开通知,它将调用 didreceivepushnotification 方法。

【讨论】:

以上是关于为啥在 iOS10 上滑动推送通知功能不运行?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的 iOS 应用程序在收到推送通知时会崩溃?

为啥我无法在 iOS 10 中处理收到的推送通知?

为啥远程推送通知在 iOS 10 上不起作用?

如果用户在 IOS 中禁用了后台应用刷新,为啥不发送推送通知?

如何在 iOS 上禁用 Google Play 游戏服务中的推送通知权限?

为啥我没有弹出推送通知?