Flutter iOS 应用提交问题警告:缺少推送通知权利
Posted
技术标签:
【中文标题】Flutter iOS 应用提交问题警告:缺少推送通知权利【英文标题】:Flutter iOS app submission issue warning: Missing Push Notification Entitlement 【发布时间】:2019-08-05 15:33:44 【问题描述】:将 Flutter 应用上传到 App Store Connect 后,我收到以下电子邮件警告:
尊敬的开发者,
我们发现您的应用最近交付的一个或多个问题, “[应用程序名称]”。您的投递成功,但您可能希望更正 您下次交付时会遇到以下问题:
缺少推送通知权利 - 您的应用似乎注册了 Apple 推送通知服务,但该应用 签名的权利不包括“aps-environment” 权利。如果您的应用使用 Apple Push Notification 服务, 确保您的 App ID 在 配置门户,并在使用 包含“aps-environment”的分发配置文件 权利。 Xcode 不会自动复制 aps-environment 在构建时配置配置文件的权利。这种行为是 故意的。要使用此权利,请启用推送通知 在项目编辑器的功能窗格中,或手动添加 您的权利文件的权利。有关详细信息,请参阅 https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1.
纠正问题后,您可以使用 Xcode 或 Application 加载程序将新的二进制文件上传到 App Store Connect。
最好的问候,
App Store 团队
我不在我的应用程序中使用推送通知?为什么我会收到此警告?以及如何删除“aps-environment”权利,无论它在哪里,无论它是什么?
注意: 这个 App Store 问题在 SO 上多次出现,有时是因为人们需要添加推送通知(参见 this 和 this),有时是因为他们没有(参见this 和 this)。不过,在我的情况下,这似乎与 Flutter 相关,所以我添加了一个新问题。
【问题讨论】:
【参考方案1】:大家都知道,只要您真的不使用推送通知,这不会导致您的应用被拒绝。因此,您可以放心 (?) 忽略此警告并继续提交您的应用。
此问题已在 GitHub here 上进行了描述,并且正在讨论解决方案 here。它显然与使用 UIApplicationDelegate
回调的 Flutter 有关:
- (void)application:(UIApplication*)application
didReceiveRemoteNotification:(NSDictionary*)userInfo
fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler;
我会让其他人更清楚地解释确切的原因。密切关注 GitHub 问题。
现在我将忽略警告。
更新:我提交了我的应用程序,它被接受了,从那以后它没有任何问题。所以请忽略警告。
【讨论】:
现在,这个问题应该已经解决了。更新你的 Flutter 版本github.com/flutter/flutter/issues/9984 我刚刚更新了颤振,仍然遇到这个问题@VinceVarga,有什么想法吗?来自 Flutter Doctor:Channel stable,v1.5.4-hotfix.2,在 Mac OS X 10.14.5 18F132 上,语言环境 en-US 尝试选择不同的频道,该修复已在两周前合并。稳定版的发布频率低于此(请参阅github.com/flutter/flutter/wiki/Flutter-build-release-channels)。我在dev
上,我不再收到来自 Apple 的投诉邮件 Flutter 1.7.3 • channel dev
更新,可能还没有修复。最新状态见:github.com/flutter/flutter/issues/9984#issuecomment-505602616
这个问题在v1.12.13+hotfix.8依然存在【参考方案2】:
截至今天,这个问题在 Flutter 中仍未解决。 请参阅Issue 9984。
虽然这不会在 App Store 中造成任何拒绝,但它仍然需要修复,并且似乎有解决方法(在上述问题中也是 described):
在 ios/Runner/Runner.entitlements 下添加一个文件 Runner.entitlements,其中包含以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>aps-environment</key>
<string>development</string>
</dict>
</plist>
【讨论】:
这意味着您也在请求允许发送推送通知而不实际发送推送通知,不是吗? @Suragch 基本上是的。它将推送通知环境设置为开发。如果您使用的是 XCode,它将自动设置。另见aps-environment 几个月前我添加了这个,错误消失了。然而,今天警告再次出现。我应该删除此文件还是存在与权利相关的任何其他潜在问题?【参考方案3】:看来我的修复只修复了日志。即使委托方法是动态实现的,Apple 仍会发送电子邮件。
在我们修复它之前,您现在可以做的一件事是为您的 iOS 应用启用推送通知功能。
Xcode 有一个简单的方法来做到这一点。为此,您必须在 Signing & Capabilities 下添加“Push Notifications”。 Xcode 将为您生成“Runner.entitlements
”文件。你可以关注这里
用 Xcode 打开你的 ios 文件夹
Runner 目标仍处于选中状态,点击Signing & Capabilities 标签,然后点击+ Capability 按钮。在过滤器字段中输入“push”,然后按 Enter。
添加推送通知权限后,您的项目应如下所示并且您的项目中将创建 Runner.entitlements
文件
【讨论】:
这应该被标记为接受的答案!我拥有所有的功能,他们的名字旁边有(Debug)
提示。在我删除并重新添加所有这些之后,他们的标题旁边不再有 (Debug)
并且文件 Runner.entitlements
已成功生成。谢谢!
拯救了我的一天,这个答案应该被标记为正确。
在 Flutter 版本 2.2.1 上表现出色!
即使在 2 年后,这东西对我也有帮助,lol tnx m8以上是关于Flutter iOS 应用提交问题警告:缺少推送通知权利的主要内容,如果未能解决你的问题,请参考以下文章
Flutter ios 应用提交:Info.plist 中缺少目的字符串