iOS应用不要求iOS7设备上的权限

时间:2016-01-11 09:47:13

标签: ios objective-c apple-push-notifications ios-permissions

我有一个使用以下代码启用推送通知的iOS应用

 if ([application respondsToSelector:@selector(isRegisteredForRemoteNotifications)])
{
    // iOS 8 Notifications
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];

    [application registerForRemoteNotifications];
}
else
{
    // iOS < 8 Notifications
    [application registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];
}

当这个应用程序在iOS9设备上运行时,它在开始时请求权限就好了,但是当在iOS7,iPhone 4上使用时,它不会要求权限,但它收到通知就好了,无法理解问题

1 个答案:

答案 0 :(得分:3)

尽管没有提供权限对话,看到您的用户正在接收推送通知,但必须遵循以下情况:

  1. 他之前的iPhone 4s版本是他授权推送通知的。
  2. 他很快卸载了之前的版本并安装了你给他的最新版本,但在重新安装之前没有给设备一天的时间。
  3. 结果是他没有提出任何要求推送通知权限的对话,因为之前已经授予了权限。
  4. 根据Apple Technical Note 2265

      

    推送启用的应用首次注册推送通知,   iOS会询问用户是否希望接收该应用的通知。   一旦用户响应此警报,就不会再次显示   除非设备已恢复或已卸载应用程序   至少一天。

         

    如果您想模拟首次运行的应用,可以离开   该应用程序已卸载一天。没有你可以实现后者   实际上是按照以下步骤等待一天:

         

    从设备中删除您的应用。完全关闭设备   把它重新打开。转到设置&gt;一般&gt;日期&amp;时间和设定   提前一天或更长时间。再次完全关闭设备   把它重新打开

    如果您要求用户在设置菜单中检查应用特定权限,他肯定会看到推送权限。否则他根本就不会收到推送通知。