远程推送通知是否需要在Info.plist中添加UIBackgroundModes?

use*_*169 82 ios info-plist uibackgroundmode

我已经集成了远程推送通知,但是我收到了这个警告:

didReceiveRemoteNotification:fetchCompletionHandler:],但你仍然需要添加" remote-notification"到列表的支持 UIBackgroundMode在你的S Info.plist.

我的Xcode版本是8.3.1.我真的想把它添加到Info.plist.我也遵循了一些教程,但他们也没有提到这一点.我该怎么办?

Tam*_*gel 202

是的,您应该启用后台模式/远程通知才能正确使用远程通知.

最简单的方法是通过项目设置.导航到目标 - >您的应用程序 - >功能 - >背景模式,然后选中远程通知.这将自动启用所需的设置.

  • 我已经检查了该字段,但仍然遇到相同的错误。 (3认同)
  • 我不同意这个答案。如果您使用远程通知进行后台更新,则应仅启用后台模式 -> 远程通知。请参阅此处的文档[配置后台更新通知](https://developer.apple.com/library/archive/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/CreatingtheNotificationPayload.html) (2认同)

Ale*_* B. 23

您还可以编辑所需的info.plist(打开为 - >源代码)并粘贴:

<dict>
<key>UIBackgroundModes</key>
    <array>
        <string>remote-notification</string>
    </array>
Run Code Online (Sandbox Code Playgroud)

  • 现在,当在后台模式下检查远程通知时,它会由Xcode自动添加 (7认同)
  • 不适合我:版本 11.4.1 (11E503a) (2认同)

mob*_*bob 7

事实上,你不需要简单地将 UIBackgroundModes 添加到 .plist 来使用远程通知。

我知道我有点毛骨悚然(另一个答案大多很棒,也许从 iOS 11 开始有些新东西),但问题是指需要后台更新的推送通知,而他们没有。

这里的区别在于,有两种不同的方法可以接受 AppDelegate 上的通知;

这个不需要你使用 UIBackgroundModes:

optional func userNotificationCenter(_ center: UNUserNotificationCenter, 
                         willPresent notification: UNNotification, 
               withCompletionHandler completionHandler: @escaping (UNNotificationPresentationOptions) -> Void)
Run Code Online (Sandbox Code Playgroud)

以上替换了自 iOS 11 起已弃用的内容:

optional func application(_ application: UIApplication, 
didReceiveRemoteNotification userInfo: [AnyHashable : Any])
Run Code Online (Sandbox Code Playgroud)

而这个确实需要后台模式功能:

optional func application(_ application: UIApplication, 
didReceiveRemoteNotification userInfo: [AnyHashable : Any], 
   fetchCompletionHandler completionHandler: @escaping (UIBackgroundFetchResult) -> Void)
Run Code Online (Sandbox Code Playgroud)

这里的关键是前一个(以及它取代的已弃用的)仅在应用程序处于前台时运行。如果应用程序在前台或后台,后者将运行。请参阅此特定块的规范

使用此方法为您的应用程序处理传入的远程通知。与 application(_:didReceiveRemoteNotification:) 方法不同,该方法仅在您的应用程序在前台运行时调用,而当您的应用程序在前台或后台运行时,系统会调用此方法。

因此,如果您需要推送通知,则决定是否需要在后台运行 - 只有当您同时需要两者时,才应实施警告建议的方法。


GO'*_*GO' 5

从以下位置选择您的 .xcodeproj 文件从项目导航器,然后转到“签名和功能”,然后从库(command+ shift+l或单击(+ 功能))搜索“后台模式” ,然后将其拖放到“签名和功能”,然后选中“远程通知”“后台处理”。另外(重要)通过单击+ 功能添加推送通知