iOS 推送通知不工作

iOS Push notification Not working

我必须为我的应用程序实施推送通知服务,因此我创建了在生产环境中启用推送通知的 App ID。第一次在我的设备中安装应用程序时,推送通知允许和不允许弹出窗口出现,如果它单击全部。它没有生成推送通知。下次我启动时它不会要求任何弹出窗口而且我无法生成设备令牌,请帮助我。

谢谢, Nikhil.CH

首先,您需要确保在显示 "allow" 弹出窗口后收到令牌或错误消息。注册通知的方法在 iOS8 中发生了重大变化,如果您使用旧方法,它将无提示地失败。
这里有一个片段:

 if ([application respondsToSelector:@selector(registerUserNotificationSettings:)])
{
        // iOS 8
        [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
}
else{
//.. the old one
}


大多数情况下,失败的原因可能是错误的 prov 配置文件和证书匹配,或者是因为您在防火墙或 VPN 后面进行测试。
为了测试它们,我使用 PUSHER 一个很棒的软件。

首先,一旦您响应了推送通知权限警报详细信息就会被保存。要重置它并再次体验警报,请按照以下步骤操作:

  1. 从设备中删除您的应用程序。

  2. 完全关闭设备,然后重新打开。

  3. 前往“设置”>“通用”>“日期与时间”并将日期提前一天或更长时间。

  4. 再次完全关闭设备,然后重新打开。

现在,这是在 iOS 应用程序上注册推送通知的分步过程:

第 1 步:询问 iOS 设备上应用程序的推送通知设置:

if ([[UIApplication sharedApplication] respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIRemoteNotificationTypeSound|UIRemoteNotificationTypeAlert) categories:nil]];
} else {
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:UIRemoteNotificationTypeAlert|UIRemoteNotificationTypeSound];
}

步骤 2:注册从上述方法调用返回的委托回调通知

- (void)application:(UIApplication *)iApplication didRegisterUserNotificationSettings:(UIUserNotificationSettings *)iNotificationSettings {
    [iApplication registerForRemoteNotifications];
}

第 3 步:实现以下方法来接收和保存从上述方法调用的令牌

- (void)application:(UIApplication *)iApplication didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)iDeviceToken
- (void)application:(UIApplication *)iApplication didFailToRegisterForRemoteNotificationsWithError:(NSError *)iError

如果您没有获得推送令牌,那么错误方法 didFailToRegisterForRemoteNotificationsWithError 一定会给您一些有用的信息。