|
@@ -1,131 +0,0 @@
|
|
|
-/**
|
|
|
|
|
- * Copyright (c) Facebook, Inc. and its affiliates.
|
|
|
|
|
- *
|
|
|
|
|
- * This source code is licensed under the MIT license found in the
|
|
|
|
|
- * LICENSE file in the root directory of this source tree.
|
|
|
|
|
- */
|
|
|
|
|
-
|
|
|
|
|
-#import "AppDelegate.h"
|
|
|
|
|
-
|
|
|
|
|
-#import <RCTJPushModule.h>
|
|
|
|
|
-
|
|
|
|
|
-#import <React/RCTBridge.h>
|
|
|
|
|
-#import <React/RCTBundleURLProvider.h>
|
|
|
|
|
-#import <React/RCTRootView.h>
|
|
|
|
|
-
|
|
|
|
|
-#ifdef NSFoundationVersionNumber_iOS_9_x_Max
|
|
|
|
|
-#import <UserNotifications/UserNotifications.h>
|
|
|
|
|
-#endif
|
|
|
|
|
-
|
|
|
|
|
-@interface AppDelegate ()<JPUSHRegisterDelegate>
|
|
|
|
|
-
|
|
|
|
|
-@end
|
|
|
|
|
-
|
|
|
|
|
-@implementation AppDelegate
|
|
|
|
|
-
|
|
|
|
|
-- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
|
|
|
|
|
- // JPush初始化配置 可以延时初始化 不再强制在此初始化,在js里可以直接调用init
|
|
|
|
|
-// [JPUSHService setupWithOption:launchOptions appKey:@"02c7f79c9248ecadf25140f7"
|
|
|
|
|
-// channel:@"dev" apsForProduction:YES];
|
|
|
|
|
- // APNS
|
|
|
|
|
- JPUSHRegisterEntity * entity = [[JPUSHRegisterEntity alloc] init];
|
|
|
|
|
- if (@available(iOS 12.0, *)) {
|
|
|
|
|
- entity.types = JPAuthorizationOptionNone; //JPAuthorizationOptionAlert|JPAuthorizationOptionBadge|JPAuthorizationOptionSou//nd|JPAuthorizationOptionProvidesAppNotificationSettings;
|
|
|
|
|
- }
|
|
|
|
|
- [JPUSHService registerForRemoteNotificationConfig:entity delegate:self];
|
|
|
|
|
-
|
|
|
|
|
-
|
|
|
|
|
-// [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey];
|
|
|
|
|
-// // 自定义消息
|
|
|
|
|
-// NSNotificationCenter *defaultCenter = [NSNotificationCenter defaultCenter];
|
|
|
|
|
-// [defaultCenter addObserver:self selector:@selector(networkDidReceiveMessage:) name:kJPFNetworkDidReceiveMessageNotification object:nil];
|
|
|
|
|
-// // 地理围栏
|
|
|
|
|
-// [JPUSHService registerLbsGeofenceDelegate:self withLaunchOptions:launchOptions];
|
|
|
|
|
- // ReactNative环境配置
|
|
|
|
|
- RCTBridge *bridge = [[RCTBridge alloc] initWithDelegate:self launchOptions:launchOptions];
|
|
|
|
|
- RCTRootView *rootView = [[RCTRootView alloc] initWithBridge:bridge
|
|
|
|
|
- moduleName:@"example"
|
|
|
|
|
- initialProperties:nil];
|
|
|
|
|
- rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1];
|
|
|
|
|
- self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
|
|
|
|
|
- UIViewController *rootViewController = [UIViewController new];
|
|
|
|
|
- rootViewController.view = rootView;
|
|
|
|
|
- self.window.rootViewController = rootViewController;
|
|
|
|
|
- [self.window makeKeyAndVisible];
|
|
|
|
|
- return YES;
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-- (NSURL *)sourceURLForBridge:(RCTBridge *)bridge
|
|
|
|
|
-{
|
|
|
|
|
-#if DEBUG
|
|
|
|
|
- return [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
|
|
|
|
|
-#else
|
|
|
|
|
- return [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
|
|
|
|
|
-#endif
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-//************************************************JPush start************************************************
|
|
|
|
|
-
|
|
|
|
|
-//注册 APNS 成功并上报 DeviceToken
|
|
|
|
|
-- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
|
|
|
|
|
- [JPUSHService registerDeviceToken:deviceToken];
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-//iOS 7 APNS
|
|
|
|
|
-- (void)application:(UIApplication *)application didReceiveRemoteNotification: (NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
|
|
|
|
|
- // iOS 10 以下 Required
|
|
|
|
|
- NSLog(@"iOS 7 APNS");
|
|
|
|
|
- [JPUSHService handleRemoteNotification:userInfo];
|
|
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationName:J_APNS_NOTIFICATION_ARRIVED_EVENT object:userInfo];
|
|
|
|
|
- completionHandler(UIBackgroundFetchResultNewData);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-//iOS 10 前台收到消息
|
|
|
|
|
-- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSInteger))completionHandler {
|
|
|
|
|
- NSDictionary * userInfo = notification.request.content.userInfo;
|
|
|
|
|
- if([notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
|
|
|
|
|
- // Apns
|
|
|
|
|
- NSLog(@"iOS 10 APNS 前台收到消息");
|
|
|
|
|
- [JPUSHService handleRemoteNotification:userInfo];
|
|
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationName:J_APNS_NOTIFICATION_ARRIVED_EVENT object:userInfo];
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- // 本地通知 todo
|
|
|
|
|
- NSLog(@"iOS 10 本地通知 前台收到消息");
|
|
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationName:J_LOCAL_NOTIFICATION_ARRIVED_EVENT object:userInfo];
|
|
|
|
|
- }
|
|
|
|
|
- //需要执行这个方法,选择是否提醒用户,有 Badge、Sound、Alert 三种类型可以选择设置
|
|
|
|
|
- completionHandler(UNNotificationPresentationOptionAlert);
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-//iOS 10 消息事件回调
|
|
|
|
|
-- (void)jpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler: (void (^)(void))completionHandler {
|
|
|
|
|
- NSDictionary * userInfo = response.notification.request.content.userInfo;
|
|
|
|
|
- if([response.notification.request.trigger isKindOfClass:[UNPushNotificationTrigger class]]) {
|
|
|
|
|
- // Apns
|
|
|
|
|
- NSLog(@"iOS 10 APNS 消息事件回调");
|
|
|
|
|
- [JPUSHService handleRemoteNotification:userInfo];
|
|
|
|
|
- // 保障应用被杀死状态下,用户点击推送消息,打开app后可以收到点击通知事件
|
|
|
|
|
- [[RCTJPushEventQueue sharedInstance]._notificationQueue insertObject:userInfo atIndex:0];
|
|
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationName:J_APNS_NOTIFICATION_OPENED_EVENT object:userInfo];
|
|
|
|
|
- }
|
|
|
|
|
- else {
|
|
|
|
|
- // 本地通知
|
|
|
|
|
- NSLog(@"iOS 10 本地通知 消息事件回调");
|
|
|
|
|
- // 保障应用被杀死状态下,用户点击推送消息,打开app后可以收到点击通知事件
|
|
|
|
|
- [[RCTJPushEventQueue sharedInstance]._localNotificationQueue insertObject:userInfo atIndex:0];
|
|
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationName:J_LOCAL_NOTIFICATION_OPENED_EVENT object:userInfo];
|
|
|
|
|
- }
|
|
|
|
|
- // 系统要求执行这个方法
|
|
|
|
|
- completionHandler();
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-//自定义消息
|
|
|
|
|
-- (void)networkDidReceiveMessage:(NSNotification *)notification {
|
|
|
|
|
- NSDictionary * userInfo = [notification userInfo];
|
|
|
|
|
- [[NSNotificationCenter defaultCenter] postNotificationName:J_CUSTOM_NOTIFICATION_EVENT object:userInfo];
|
|
|
|
|
-}
|
|
|
|
|
-
|
|
|
|
|
-//************************************************JPush end************************************************
|
|
|
|
|
-
|
|
|
|
|
-@end
|
|
|