我有一个使用以下代码启用了推送通知的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上使用时,它不要求权限,但收到通知就很好,无法理解问题。
最佳答案
看到您的用户尽管未显示权限对话框,但仍收到推送通知,因此必须满足以下条件:
根据Apple Technical Note 2265:
启用推送功能的应用首次注册推送通知时,
iOS询问用户是否希望接收该应用程序的通知。
用户响应此警报后,不再显示
除非设备已还原或已在卸载了该应用
至少一天。
如果要模拟应用程序的首次运行,可以离开
该应用卸载了一天。您可以实现后者而无需
请按照以下步骤实际等待一天:
从设备中删除您的应用。完全关闭设备,然后
重新打开。转到设置>常规>日期和时间,然后设置
提前一天或更长时间约会。再次完全关闭设备,然后
重新打开
如果您要求用户在“设置”菜单中检查应用程序特定的权限,他肯定会看到“推送”权限。否则,他将根本不会收到推送通知。