美文网首页
极光推送

极光推送

作者: 心底碎片 | 来源:发表于2018-03-28 09:41 被阅读5次

    1、注册极光账号,创建应用,再根据文档,到苹果开发者中心,创建推送证书,导出成p12,上传到极光平台。(这些极光推送文档有步骤)
    2、使用cocoapods导入JPush
    pod 'JPush', '~> 3.0.8'
    3、在AppDelegate中先引入头文件

    #import "JPUSHService.h"
    // iOS10注册APNs所需头文件
    #ifdef NSFoundationVersionNumber_iOS_9_x_Max
    #import <UserNotifications/UserNotifications.h>
    #endif
    // 如果需要使用idfa功能所需要引入的头文件(可选)
    #import <AdSupport/AdSupport.h>
    
    #pragma mark 极光推送
        //notice: 3.0.0及以后版本注册可以这样写,也可以继续用之前的注册方式
        NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
        JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];
        entity.types = JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSound;
        if ([[UIDevice currentDevice].systemVersion floatValue] >= 8.0) {
        }
        [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
    #pragma mark 这个位置在发布的时候要改成生产环境
        [JPUSHService setupWithOption:launchOptions appKey:@"a7e9c964f098c6f858d81025" channel:@"AppStore" apsForProduction:NO advertisingIdentifier:advertisingId];
        [JPUSHService registrationIDCompletionHandler:^(int resCode, NSString *registrationID) {
            if(resCode == 0){
                NSLog(@"registrationID获取成功:%@",registrationID);
                NSUserDefaults *user = [NSUserDefaults standardUserDefaults];
                [user setObject:registrationID forKey:@"registrationID"];
                [user synchronize];
            }
            else{
                NSLog(@"registrationID获取失败,code:%d",resCode);
            }
        }];
        if (launchOptions) {
            NSDictionary * remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
            if (remoteNotification) {
                [self goToMssageViewControllerWith:remoteNotification];
            }
        }
    
    #pragma mark 推送
    - (void)application:(UIApplication *)application
    didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
        [JPUSHService registerDeviceToken:deviceToken];
    }
    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
        //Optional
        NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
    }
    #pragma mark- JPUSHRegisterDelegate
    
    - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
        // Required
        NSDictionary * userInfo = notification.request.content.userInfo;
        if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
            [JPUSHService handleRemoteNotification:userInfo];
        }
        completionHandler(UNNotificationPresentationOptionAlert); // 需要执行这个方法,选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置
    }
    
    // iOS 10 Support
    - (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
        // Required
        NSDictionary * userInfo = response.notification.request.content.userInfo;
        if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
            [JPUSHService handleRemoteNotification:userInfo];
        }
        completionHandler();  // 系统要求执行这个方法
    }
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
        NSLog(@"推送消息===%@",userInfo);
        // Required, iOS 7 Support
        [JPUSHService handleRemoteNotification:userInfo];
        completionHandler(UIBackgroundFetchResultNewData);
    }
    
    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
        NSLog(@"推送消息===%@",userInfo);
        application.applicationIconBadgeNumber = 0;
        [self goToMssageViewControllerWith:userInfo];
        [JPUSHService handleRemoteNotification:userInfo];
        
    }
    - (void)applicationWillEnterForeground:(UIApplication *)application {
        //即将进入前台,图标上的未读消息清零
        [application setApplicationIconBadgeNumber:0];
        [application cancelAllLocalNotifications];
        
    }
    - (void)goToMssageViewControllerWith:(NSDictionary *)dic{
        NSLog(@"%@",dic);
    }
    

    4、在登录成功之后,取用户的一个标识作为alias,一般用userId或者userNumber。

    [JPUSHService setAlias:model.userNumber completion:^(NSInteger iResCode, NSString *iAlias, NSInteger seq) {
                    NSLog(@"%@",iAlias);
                    if (iResCode == 0) {
                        NSLog(@"添加别名成功");
                    }
                } seq:1];
    

    5、在用户退出登录的时候,删除别名

    [JPUSHService deleteAlias:^(NSInteger iResCode, NSString *iAlias, NSInteger seq) {
                    if (iResCode == 0) {
                        NSLog(@"删除别名成功");
                    }
                } seq:1];
    

    相关文章

      网友评论

          本文标题:极光推送

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