推送通知委托方法问题

我是Objective C新手。在我的应用程序中,我需要实现推送通知,我已经创build了新的应用程序ID,并且我也创build了新的供应configuration文件。 我已完成此链接中提到的所有步骤

我已经在我的appDelegate .m文件中声明了这个委托函数。

- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { NSString *deviceTokens = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]]; deviceTokens = [deviceTokens stringByReplacingOccurrencesOfString:@" " withString:@""]; NSLog(@"registered device token %@", deviceTokens); self.deviceToken = deviceTokens; } - (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { NSString *str = [NSString stringWithFormat: @"Error: %@", err]; NSLog(@"String %@",str); } - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { for (id key in userInfo) { NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]); } } 

但是这个委托函数没有被调用。 请帮我解决这个问题。

在你的AppDelegated didfinishLaunching with options写下面一行

 [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)]; 

将此代码添加到您的应用程序代理内部的didFinishLaunchingWithOptions方法中

if([application respondsToSelector:@selector(registerUserNotificationSettings :)]){

  //We check because ios7 cannot respond to this method and there will be a crash.. UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert; UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil]; [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings]; [application registerForRemoteNotifications]; } else { //This will work on ios7 devices and below UIRemoteNotificationType types = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound; [application registerForRemoteNotificationTypes:types]; [application registerForRemoteNotifications]; } return YES; 

使用新的委托方法

Swift:func application(application:UIApplication,didReceiveRemoteNotification userInfo:[NSObject:AnyObject],fetchCompletionHandler completionHandler:(UIBackgroundFetchResult) – > Void)