极光推送

  • 照着文档来就只缺一个获取devicetoken,上代码呗

#pragma mark - 极光推送

- (void)JPush:(NSDictionary *)launchOptions {
    [self JPushAddAPNs];
    [self JPushInit:launchOptions];
}

// 添加初始化APNs代码
- (void)JPushAddAPNs {
    
    if (GETCURRENTVERSION >= 10.0) {
        JPUSHRegisterEntity *entity = [[JPUSHRegisterEntity alloc] init];
        entity.types = UNAuthorizationOptionAlert | UNAuthorizationOptionBadge | UNAuthorizationOptionSound;
        [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
    } else if (GETCURRENTVERSION >= 8.0) {
        [JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert) categories:nil];
    } else {
        // 不在支持8.0以下
    }
}

// 初始化JPUsh代码 设置的是开发模式
- (void)JPushInit:(NSDictionary *)launchOptions {
    // 获取IDFA 没有可直接传nil
    NSString *advertisingId = [[[ASIdentifierManager sharedManager] advertisingIdentifier] UUIDString];
    
    // channel是分发路径 一个是什么模式 adverid可有可无
   [JPUSHService setupWithOption:launchOptions appKey:JPushAppKey channel:@"" apsForProduction:NO advertisingIdentifier:advertisingId];
}

// 注册APNs失败接口
- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    //Optional
    NSLog(@"did Fail To Register For Remote Notifications With Error: %@", error);
}

// 获取deviceToken  环信也需要在这儿获取给SDK
/*****************这个在极光的文档里并没有********************/
- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    
    [JPUSHService registerDeviceToken:deviceToken];
}

#pragma mark - JPUSHRegisterDelegate

// iOS 10 Support 提示后台全部包在一个数组里 这个安卓可以成功iOS可能存在问题 但是是后台的错
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
    NSDictionary *userInfo = notification.request.content.userInfo;
    if ([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        [JPUSHService handleRemoteNotification:userInfo];
    }
    completionHandler(UNNotificationPresentationOptionAlert); // 系统要求执行额这个方法 选择是否提醒用户,有Badge、Sound、Alert三种类型可以选择设置
}

/**********     文档也没有 但是Appdelegate有提示     ***************/
- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void (^)())completionHandler {
    NSDictionary * userInfo = response.notification.request.content.userInfo;
    if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
        [JPUSHService handleRemoteNotification:userInfo];
    }
    completionHandler();  // 系统要求执行这个方法
}

// iOS 7
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    [JPUSHService handleRemoteNotification:userInfo];
    completionHandler(UIBackgroundFetchResultNewData);
}

// 环信接受到的推送 极光接收的推送
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
    [JPUSHService handleRemoteNotification:userInfo];
}

你可能感兴趣的:(极光推送)