在后台推送通知

Posted

技术标签:

【中文标题】在后台推送通知【英文标题】:PushNotification in BackGround 【发布时间】:2015-11-04 09:59:49 【问题描述】:

当应用程序处于后台模式并且用户单击通知时收到推送通知时调用此方法。但是我想在通知进入后台模式时调用一个方法,而无需用户点击通知。

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler

    NSLog(@"%@",userInfo);

【问题讨论】:

如果您启用了通知的后台处理权限,并且 APN 字典包含具有非零值的 content-available 键,则应在收到 APN 后立即调用委托方法,甚至在用户看到要点击的横幅(或警报)之前。 见this answer... 【参考方案1】:

为此,您需要为远程通知启用后台模式。您可以在项目的 Capabilities 部分找到它。除此之外,您传入的通知有效负载应包含 content-available:1 键值对。 然后这个方法会立即被调用,无需用户交互。

注意:如果应用程序处于后台或挂起状态,这将有效。如果应用程序被用户完全杀死或强制退出,它将无法运行。

【讨论】:

我已启用远程通知的后台模式,并且有效负载应包含 content-available:1 键值对但不调用我的后台方法 @priyankagautam 你确定你的 APN 包含 aps = "content-available" : 1, sound : "" ; 以类似的方式

以上是关于在后台推送通知的主要内容,如果未能解决你的问题,请参考以下文章

在后台推送 iOS 通知

如何在后台 laravel 中运行推送通知循环?

在后台模式下接收远程推送通知是不是可以多次振动?

ios在后台处理推送通知

推送通知后台被用户杀死

iOS 应用未收到来自 Firebase 的后台推送通知