iOS8推送注册方式改变

作者: Lonely__M | 来源:发表于2015-06-04 16:52 被阅读2267次

    如题,笔者近期开发项目需要远程推送,注册远程通知后不调用didRegisterForRemoteNotificationsWithDeviceToken方法,多方查阅资料得知iOS8推送注册方式改变,注册代码如下:

    @interface AppDelegate ()
    
    @end
    
    @implementation AppDelegate
    
    
    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        // Override point for customization after application launch.
        
        //首次打开应用,跳转登录界面
        
        
        //登录成功,跳转主界面
        [self LoadMainView];
        
        //注册远程通知
        if ([[UIDevice currentDevice].systemVersion floatValue] < 8.0)
        {
            UIRemoteNotificationType type = UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound;
            
            [application registerForRemoteNotificationTypes:type];
            
        }
        else
        {
            UIUserNotificationType type = UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound;
            
            UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:type categories:nil];
            
            [application registerUserNotificationSettings:setting];
            
        }
        
        
        return YES;
    }
    
    #pragma mark 注册远程通知代理方法,返回deviceToken
    
    #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
    
    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
    {
        NSString* newToken = [[[NSString stringWithFormat:@"%@",deviceToken]
                               stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]] stringByReplacingOccurrencesOfString:@" " withString:@""];
        NSLog(@"nsdata:%@\n 字符串token: %@",deviceToken, newToken);// 获取device token
        //将token发送给服务器
    }
    
    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
    {
        NSLog(@"RegistFail %@",error);
    }
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
    {
        
    }
    
    
    • iOS8之后注册远程通知需要实现代理方法:
    - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
    {
        //register to receive notifications
        [application registerForRemoteNotifications];
    }
    

    实现上述代理方法后,即可在APNS注册成功,获得返回的deviceToken

    相关文章

      网友评论

      本文标题:iOS8推送注册方式改变

      本文链接:https://www.haomeiwen.com/subject/ncmdqttx.html