我有一个应用程序应该启用推送通知,但由于某种原因没有它们。我见过其他人下载并安装该应用程序,它甚至没有提示他们发送推送通知的权限。正如所料,此应用不会出现在他们的设置>通知。
但是,在我的iPad上,我可以从此应用收到推送通知,并且它确实显示在我的设置>通知。我删除并重新安装了该应用程序,以确保我拥有其他人拥有的相同内容(而不是开发版本),并且我仍然可以收到通知。
现在,这个应用程序是为一个客户端编写的,他向我发送了所有配置文件(dev,adhoc,distribution)以及能够发送推送通知所需的文件,因此我无法确切知道所有内容是正确创造的。
我现在的理论是:
所以我的问题是:
答案 0 :(得分:23)
好的,我可能已经找到了验证配置文件是否已启用推送的方法。
如果我将.mobileprovision文件作为文本文件打开,那里有一些XML(显然是一个plist),我猜测分发配置文件应该有这个:
<key>aps-environment</key>
<string>production</string>
事实上,adhoc配置文件有这个,而配置文件没有,所以......我猜这是问题所在。
但是,任何反馈都会有所帮助:)
答案 1 :(得分:7)
略有不同,但仍然有用:当您将应用程序上传到iTunes Connect时,您可以检查是否启用了推送通知(或任何其他权利)。
要执行此操作,请转到“管理您的应用程序”,选择该应用程序,然后转到要查看的版本的“查看详细信息”。
从那里,转到“二进制详细信息”页面 - 有一个Entitlements字段,显示二进制文件的权利。如果启用了“推送通知”,则会在其中看到“aps-environment: production
”行。
答案 2 :(得分:0)
确保在创建aps_certificate后生成分发配置文件。更改配置文件可能会错过aps-environment
答案 3 :(得分:0)
我将以下内容添加到 AppDelegate.m ,以便我可以确切地看到调试中启用了哪些设置
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
UIRemoteNotificationType enabledTypes = [[UIApplication sharedApplication] enabledRemoteNotificationTypes];
NSLog(@"Receiving Notification Types: %lu", (long)enabledTypes); //0=none 1=badge 2=sound 4=alert 8=NewsStandContantAvailability
我从一个非常包容且有用的链接中得到了这个:Apple Push Notification Service Tutorial - Part 1 这对我非常有帮助。