- 照着文档来就只缺一个获取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];
}