我们已经创建了应用ID,分发证书和配置文件。推送通知最初未启用。
我们现在需要在应用程序中实现推送通知。
我们已在App D中启用了推送通知,检查配置文件,配置文件无效,更新了它,并下载了最新的配置文件以供下次使用。
然后,我们在代码中通过APNS集成推送通知API。
在iTunesConnect上传应用程序后,我们收到Apple发来的以下电子邮件:
亲爱的开发人员,
我们发现您最近为“Swanvi”发送的一个或多个问题。您的交付成功,但您可能希望在下次交付时更正以下问题:
缺少推送通知权利 - 您的应用似乎包含用于向Apple推送通知服务注册的API,但应用签名的权利不包括“aps-environment”权利。如果您的应用使用Apple推送通知服务,请确保在配置门户中为推送通知启用了您的应用ID,并在使用包含“aps-environment”权利的配置配置文件对应用进行签名后重新提交。有关详细信息,请参阅“本地和推送通知编程指南”中的“供应和开发”。如果您的应用不使用Apple推送通知服务,则无需执行任何操作。您可以从将来的提交中删除API以停止此警告。如果您使用第三方框架,则可能需要与开发人员联系以获取有关删除API的信息。
更正问题后,您可以使用Xcode或Application Loader将新二进制文件上传到iTunes Connect。
我们已重新检查了应用ID。推送通知已启用开发和生产。
在配置文件中,将显示“推送通知”选项。
为什么我们会通过电子邮件收到此警告?
答案 0 :(得分:48)
您需要看到两件事:您的帐户在Xcode上使用的配置文件以及developer.apple上的配置文件
关于配置文件的全部内容。
第1步:
转到https://developer.apple.com/account/ios/certificate/,查看您的应用所需的Active
iOS分发配置文件。然后点击它,确保Enabled Services
已启用Push Notification
。如果没有,则单击编辑并按照Apple提供的步骤启用它。如果启用则完美。
第2步:
删除您看到的与应用相关的所有Invalid
配置文件(仅适用于您的应用的无效配置文件)。我会在以下步骤中告诉你原因。
第3步: 转到Xcode - >偏好 - >查看详细信息(适用于您的帐户) - > [可选:要确保无效的消失,请单击任何配置文件,选择“在Finder中显示”,然后从该文件夹中删除/移动所有配置文件。]现在单击“下载所有配置文件”。这将用当前配置文件替换当前配置文件。点击完成。
第4步:
转到您的应用目标 - >构建设置 - >在代码签名中,展开您的配置文件以显示Debug
和Release
标签。默认情况下,它将处于自动状态(这就是为什么您的应用可能会自动使用我们刚刚在步骤2中删除的无效配置文件)。对于Release
,要更安全,请选择Active
配置配置文件,并启用推送通知,如步骤1所示。
就是这样。
您现在不应该收到任何电子邮件。
答案 1 :(得分:16)
@Djeeraj V.S.是正确的。 Cordova添加了一些条件编译,以删除不需要推送通知的应用程序的此要求。
您可以根据this answer在Classes\AppDelegate.h
中注释掉代码,但最好通过用户界面添加编译符号DISABLE_PUSH_NOTIFICATIONS
,这样您就可以继续受益于未来的Cordova升级
我来自.NET背景,所以我熟悉条件编译,但不得不花一点时间研究如何让编译器标志在XCode中工作。
这里的魔术词是“预处理器宏”。以下是通过UI以图形方式完成的操作(请注意,这是在XCode 6.1中完成的方式):
希望这可以帮助其他人在同样的情况下。
答案 2 :(得分:9)
答案 3 :(得分:2)
我有同样的警告,这就是我如何解决它。
首先,当您归档项目时,如果您没有看到 aps-environment 并且您的应用使用了推送通知,则在权利下,您将收到问题中提到的警告。< / p>
FIX STEPS
1-确保您的分发配置文件在Apple门户网站中有效。 - 如果不是,则重新生成它。 2-如果您的分发配置文件有效,则在XCode中,导航至首选项,然后单击查看详细信息。此时,在配置配置文件下,请确保您没有无效的分发配置文件。如果存在无效的,则右键单击并将其移至废纸篓。如果您没有有效的,请从Portal下载。 3-转到构建设置 - &gt;代码签名,并为所有内容选择分发配置文件。
此时如果您存档,您可以在权利中看到aps-environment,并且不会收到警告电子邮件。
答案 4 :(得分:2)
就我而言,以下练习有效。 Xcode 9.2
trans = 'log2'
Automatically manage signing
答案 5 :(得分:0)
我有一个cordova应用程序,以前我曾在这里收到过通知,但想将其从应用程序中删除。我尝试按照上述答案进行操作,但是在上载版本时仍然遇到此问题。我意识到,我安装了一个插件,使用了通知设置,并以某种方式保持了一些用于通知的设置。
我通过完全删除ios平台cordova platform rm ios
,再次添加cordova platform add ios
并确保已从ios.json
和fetch.json
文件中删除了该插件的方式解决了该问题。
答案 6 :(得分:0)