如何检查iOS分发配置文件是否启用了推送通知?

时间:2012-01-05 18:13:09

标签: iphone ios push-notification apple-push-notifications

我有一个应用程序应该启用推送通知,但由于某种原因没有它们。我见过其他人下载并安装该应用程序,它甚至没有提示他们发送推送通知的权限。正如所料,此应用不会出现在他们的设置>通知。

但是,在我的iPad上,我可以从此应用收到推送通知,并且它确实显示在我的设置>通知。我删除并重新安装了该应用程序,以确保我拥有其他人拥有的相同内容(而不是开发版本),并且我仍然可以收到通知。

现在,这个应用程序是为一个客户端编写的,他向我发送了所有配置文件(dev,adhoc,distribution)以及能够发送推送通知所需的文件,因此我无法确切知道所有内容是正确创造的。

我现在的理论是:

  • 我收到的 adhoc个人资料已“正确创建”(即在配置门户中的应用App ID上设置APN后生成)
  • 我收到的分发配置文件是在为此应用设置APN 之前生成的(因此,它不是“启用推送”)
  • 我能够在我的设备上接收推送通知的原因是因为在开发过程中我安装了一个adhoc版本,这促使我获得了接收推送通知的权限,即使我已删除这个adhoc版本并从商店下载了该版本,该设备已“缓存”我愿意接收通知而不再提示我的事实。我已经检查了其他应用程序,事实上,在我删除并重新安装它们之后,它们不会再次提示我接收推送通知的权限。

所以我的问题是:

  • 这个理论有意义吗?
  • 如果是,这意味着我将要求客户生成新的分发配置文件。 如何验证此配置文件是否已“启用推送”?(即考虑到我不能只安装使用它编译的应用)

4 个答案:

答案 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 这对我非常有帮助。