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

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

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

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

我现在的理论是:

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

所以我的问题是:

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

好的,我可能已经找到了validation配置文件是否已启用推送的方法。

如果我打开.mobileprovision文件作为文本文件,那里有一些XML(显然是一个plist),我猜测分发配置文件应该有这个:

aps-environment production 

事实上,adhoc配置文件有这个和分布配置文件没有,所以…我猜这是问题所在。

不过,任何反馈都会有所帮助:)

略有不同,但仍然有用:当您将应用程序上传到iTunes连接时,您可以检查是否启用了推送通知(或任何其他权利)。

要执行此操作,请转到“管理您的应用程序”,选择该应用程序,然后转到要查看的版本的“查看详细信息”。

从那里,转到“二进制详细信息”页面 – 有一个Entitlements字段,显示二进制文件的权限。 如果启用了推送通知,您将在其中看到“ aps-environment: production ”行。

确保在创建aps_certificate后生成分发配置文件。 更改配置文件可能会错过aps-environment

我将以下内容添加到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推送通知服务教程 – 第1部分对我非常有帮助。