Ios 未调用Apple推送通知委托方法
工作正常,但使用相同的代码,无论调用成功还是失败的委托方法,日志上都没有错误。今天出现的这个问题是在iPadAir(8.0)上测试它,还有其他人面临同样的问题吗 以下是我的实现代码:Ios 未调用Apple推送通知委托方法,ios,iphone,ipad,ios8,apple-push-notifications,Ios,Iphone,Ipad,Ios8,Apple Push Notifications,工作正常,但使用相同的代码,无论调用成功还是失败的委托方法,日志上都没有错误。今天出现的这个问题是在iPadAir(8.0)上测试它,还有其他人面临同样的问题吗 以下是我的实现代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if ([application respondsToSelector:@selector(r
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
// iOS 8
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}
return YES;
}
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
}
谢谢将这些方法添加到AppDelegate
#ifdef __IPHONE_8_0
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
//register to receive notifications
[application registerForRemoteNotifications];
}
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
{
//handle the actions
if ([identifier isEqualToString:@"declineAction"]){
}
else if ([identifier isEqualToString:@"answerAction"]){
}
}
#endif
请在didfinishlaund方法中添加以下代码
if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
{
[[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
[[UIApplication sharedApplication] registerForRemoteNotifications];
}else {
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
}
if ([launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]) {
[self application:[UIApplication sharedApplication] didReceiveRemoteNotification:[launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]];
}
请按照此操作注册远程通知。()您是否更改了设置配置文件?使用iOS 8时,您必须添加
didRegisterUserNotificationSettings
。现在,您正在使用iOS 7上的DeviceToken的DidRegisterForRemotionTifications。是的,我最近确实更改了配置文件,但即使切换回我的旧配置文件,我仍然无法获得任何设备令牌。突然之间,我们也面临着同样的问题。。还没有解决办法。。这是我们现在面临的最严重的错误。这与我的代码几乎相同,使用它我仍然无法获取设备令牌。请检查您的服务方。。检查pem文件是否正常??这段代码很完美,我使用这段代码,我得到了设备令牌。因为我还没有设备令牌,所以服务器上没有任何东西可以检查。我知道您的代码是正确的,但仍然不适用于我,所以一定是其他原因。调用了didRegisterUserNotificationSettings,但handleActionWithIdentifier或任何其他与通知相关的方法不会发生任何情况。您还应该添加-(void)application:(UIApplication*)应用程序didRegisterForRemotonificationswithDeviceToken:(NSData*)deviceToken;-(无效)应用程序:(UIApplication*)应用程序未能注册远程通知,错误为:(N错误*)错误;