Flutter iOS应用提交问题警告:缺少推送通知权利

时间:2019-03-14 16:27:56

标签: ios flutter apple-push-notifications app-store

将Flutter应用上传到App Store Connect之后,我收到以下电子邮件警告:

  

亲爱的开发人员,

     

我们确定了您的应用最近交付的一个或多个问题,   “ [APP NAME]”。您的交付成功,但您可能希望更正   下次发货时出现以下问题:

     

缺少推送通知权利-您的应用似乎已在Apple Push Notification服务中注册,但是该应用   签名的权利不包括“ aps-environment”   权利。如果您的应用程序使用Apple Push Notification服务,   确保在的“推送通知”中启用了您的应用ID   Provisioning Portal,然后使用   包含“ aps环境”的分发供应配置文件   权利。 Xcode不会自动复制aps环境   在构建时来自配置文件的权利。此行为是   故意的。要使用此权利,请启用“推送通知”   在项目编辑器的“功能”窗格中,或手动添加   您的权利文件的权利。有关更多信息,请参见   https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1

     

解决问题后,您可以使用Xcode或应用程序   加载程序可将新的二进制文件上传到App Store Connect。

     

最诚挚的问候,

     

App Store团队

我在应用程序中不使用推送通知吗?为什么会收到此警告?以及无论我在哪里,如何删除“ aps环境”权利?

注意:此App Store问题在SO上已多次出现,有时是因为人们需要添加推送通知(请参见thisthis),有时是因为他们没有't(请参见thisthis)。不过,就我而言,这似乎与Flutter有关,所以我要添加一个新问题。

3 个答案:

答案 0 :(得分:6)

似乎我的修复只修复了日志。即使委托方法是动态实现的,Apple 仍会发送电子邮件。

在我们修复它之前,您现在可以做的一件事是为您的 iOS 应用启用推送通知功能。

Xcode 有一个简单的方法来做到这一点。为此,您必须在签名和功能下添加“推送通知”。 Xcode 将为您生成“Runner.entitlements”文件。你可以关注这里

  1. 用 Xcode 打开你的 ios 文件夹

  2. Runner 目标仍处于选中状态,点击签名和能力标签,然后点击+能力按钮。在过滤器字段中输入“push”,然后按 Enter。

    enter image description here

  3. 添加推送通知权限后,您的项目应如下所示,并且 Runner.entitlements 文件已在您的项目中创建

    enter image description here enter image description here

答案 1 :(得分:4)

到目前为止,Flutter仍未解决此问题。 参见Issue 9984

虽然这不会在App Store中引起任何拒绝,但仍需要修复,并且似乎可以解决此问题(上述问题中的described):

在ios / Runner / Runner.entitlements下的文件 Runner.entitlements 中添加以下内容:

"{{ hostvars['ansible_hostname'].['ip'] }}"

答案 2 :(得分:2)

常言道,只要您真的不使用推送通知,就不会导致您的应用被拒绝。因此,您可以放心(?)忽略此警告,然后继续提交您的应用。

此问题已在GitHub here上进行了描述,并且正在讨论一种解决方案here。显然,它与使用UIApplicationDelegate回调的Flutter相关:

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

我会让其他人更清楚地解释确切原因。密切关注GitHub问题。

目前,我只是忽略警告。

更新:我提交了我的应用程序,该应用程序已被接受,从那时起就没有任何问题。因此,只需忽略警告即可。