From c55aa3121192ea128948b3991dddf269c8c5dbab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A9=B9=E5=BC=BA?= Date: Tue, 10 Sep 2019 23:07:01 +0800 Subject: [PATCH 1/4] =?UTF-8?q?Android-=E6=9B=B4=E6=96=B0example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/android/app/build.gradle | 6 ++---- example/android/app/src/main/AndroidManifest.xml | 2 +- .../main/java/com/{pushdemo => example}/MainActivity.java | 4 ++-- .../java/com/{pushdemo => example}/MainApplication.java | 3 ++- example/android/app/src/main/res/values/strings.xml | 2 +- example/android/build.gradle | 8 +------- 6 files changed, 9 insertions(+), 16 deletions(-) rename example/android/app/src/main/java/com/{pushdemo => example}/MainActivity.java (88%) rename example/android/app/src/main/java/com/{pushdemo => example}/MainApplication.java (95%) diff --git a/example/android/app/build.gradle b/example/android/app/build.gradle index 6dd539d6..a0865956 100644 --- a/example/android/app/build.gradle +++ b/example/android/app/build.gradle @@ -94,12 +94,11 @@ def enableSeparateBuildPerCPUArchitecture = false def enableProguardInReleaseBuilds = false android { - compileSdkVersion 25 - + compileSdkVersion 28 defaultConfig { applicationId "com.jmessage.sdk" //替换包名: minSdkVersion 16 - targetSdkVersion 23 + targetSdkVersion 28 versionCode 1 versionName "1.0" ndk { @@ -144,7 +143,6 @@ dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation project(':jcore-react-native') implementation project(':jpush-react-native') - implementation 'com.android.support:appcompat-v7:25.3.1' implementation 'com.facebook.react:react-native:+' } diff --git a/example/android/app/src/main/AndroidManifest.xml b/example/android/app/src/main/AndroidManifest.xml index c63b90c9..21ad3cba 100644 --- a/example/android/app/src/main/AndroidManifest.xml +++ b/example/android/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + package="com.example"> getPackages() { return Arrays.asList( new MainReactPackage(), + //需要add JPush new JPushPackage() ); } diff --git a/example/android/app/src/main/res/values/strings.xml b/example/android/app/src/main/res/values/strings.xml index 599a1ca2..b1d7fde6 100644 --- a/example/android/app/src/main/res/values/strings.xml +++ b/example/android/app/src/main/res/values/strings.xml @@ -1,3 +1,3 @@ - ReactNative-JPush + JPush-RN diff --git a/example/android/build.gradle b/example/android/build.gradle index b63f7ed0..aa53b275 100644 --- a/example/android/build.gradle +++ b/example/android/build.gradle @@ -1,15 +1,10 @@ -// Top-level build file where you can add configuration options common to all sub-projects/modules. - buildscript { repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.3.2' - - // NOTE: Do not place your application dependencies here; they belong - // in the individual module build.gradle files + classpath 'com.android.tools.build:gradle:3.3.0' } } @@ -19,7 +14,6 @@ allprojects { mavenLocal() jcenter() maven { - // All of React Native (JS, Obj-C sources, Android binaries) is installed from npm url "$rootDir/../node_modules/react-native/android" } } From 3b12fc8fa4ba0dd2f15ee11680090a08f5fd51fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A9=B9=E5=BC=BA?= Date: Tue, 10 Sep 2019 23:08:17 +0800 Subject: [PATCH 2/4] =?UTF-8?q?iOS-=20=E6=9B=B4=E6=96=B0example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ios/PushDemo.xcodeproj/project.pbxproj | 138 ++++++++---------- example/ios/PushDemo/AppDelegate.m | 2 +- example/ios/PushDemo/Info.plist | 4 - 3 files changed, 58 insertions(+), 86 deletions(-) diff --git a/example/ios/PushDemo.xcodeproj/project.pbxproj b/example/ios/PushDemo.xcodeproj/project.pbxproj index 6c13e80b..acbb3d84 100644 --- a/example/ios/PushDemo.xcodeproj/project.pbxproj +++ b/example/ios/PushDemo.xcodeproj/project.pbxproj @@ -190,19 +190,33 @@ remoteGlobalIDString = 3D3CD9321DE5FBEE00167DC4; remoteInfo = "cxxreact-tvOS"; }; - 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + 5CAF6C072327F2F100B5A09F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 3D3CD90B1DE5FBD600167DC4; - remoteInfo = jschelpers; + remoteGlobalIDString = EDEBC6D6214B3E7000DD5AC8; + remoteInfo = jsi; }; - 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */ = { + 5CAF6C092327F2F100B5A09F /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; proxyType = 2; - remoteGlobalIDString = 3D3CD9181DE5FBD800167DC4; - remoteInfo = "jschelpers-tvOS"; + remoteGlobalIDString = EDEBC73B214B45A300DD5AC8; + remoteInfo = jsiexecutor; + }; + 5CAF6C0B2327F2F100B5A09F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = ED296FB6214C9A0900B7C4FE; + remoteInfo = "jsi-tvOS"; + }; + 5CAF6C0D2327F2F100B5A09F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; + proxyType = 2; + remoteGlobalIDString = ED296FEE214C9CF800B7C4FE; + remoteInfo = "jsiexecutor-tvOS"; }; 5E9157321DD0AC6500FF2AA8 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; @@ -246,20 +260,6 @@ remoteGlobalIDString = 6212E9B41F3990DC00BDF51A; remoteInfo = RCTJCoreModule; }; - 62EDFB3B2019B8C000C0628D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3DBE0D001F3B181A0099AA32; - remoteInfo = fishhook; - }; - 62EDFB3D2019B8C000C0628D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 139FDEE61B06529A00C62182 /* RCTWebSocket.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 3DBE0D0D1F3B181C0099AA32; - remoteInfo = "fishhook-tvOS"; - }; 62EDFB4D2019B8C000C0628D /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; @@ -288,20 +288,6 @@ remoteGlobalIDString = 3D383D621EBD27B9005632C8; remoteInfo = "double-conversion-tvOS"; }; - 62EDFB552019B8C000C0628D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9936F3131F5F2E4B0010BF04; - remoteInfo = privatedata; - }; - 62EDFB572019B8C000C0628D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = 146833FF1AC3E56700842450 /* React.xcodeproj */; - proxyType = 2; - remoteGlobalIDString = 9936F32F1F5F2E5B0010BF04; - remoteInfo = "privatedata-tvOS"; - }; 78C398B81ACF4ADC00677621 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = 78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */; @@ -490,8 +476,6 @@ children = ( 139FDEF41B06529B00C62182 /* libRCTWebSocket.a */, 3DAD3E991DF850E9000B6D8A /* libRCTWebSocket-tvOS.a */, - 62EDFB3C2019B8C000C0628D /* libfishhook.a */, - 62EDFB3E2019B8C000C0628D /* libfishhook-tvOS.a */, ); name = Products; sourceTree = ""; @@ -520,16 +504,16 @@ 3DAD3EA71DF850E9000B6D8A /* libyoga.a */, 3DAD3EA91DF850E9000B6D8A /* libcxxreact.a */, 3DAD3EAB1DF850E9000B6D8A /* libcxxreact.a */, - 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */, - 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */, 6279623B212124B400CFE32D /* libjsinspector.a */, 6279623D212124B400CFE32D /* libjsinspector-tvOS.a */, 62EDFB4E2019B8C000C0628D /* libthird-party.a */, 62EDFB502019B8C000C0628D /* libthird-party.a */, 62EDFB522019B8C000C0628D /* libdouble-conversion.a */, 62EDFB542019B8C000C0628D /* libdouble-conversion.a */, - 62EDFB562019B8C000C0628D /* libprivatedata.a */, - 62EDFB582019B8C000C0628D /* libprivatedata-tvOS.a */, + 5CAF6C082327F2F100B5A09F /* libjsi.a */, + 5CAF6C0A2327F2F100B5A09F /* libjsiexecutor.a */, + 5CAF6C0C2327F2F100B5A09F /* libjsi-tvOS.a */, + 5CAF6C0E2327F2F100B5A09F /* libjsiexecutor-tvOS.a */, ); name = Products; sourceTree = ""; @@ -719,7 +703,7 @@ ProvisioningStyle = Manual; SystemCapabilities = { com.apple.BackgroundModes = { - enabled = 1; + enabled = 0; }; com.apple.Push = { enabled = 1; @@ -946,18 +930,32 @@ remoteRef = 3DAD3EAA1DF850E9000B6D8A /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 3DAD3EAD1DF850E9000B6D8A /* libjschelpers.a */ = { + 5CAF6C082327F2F100B5A09F /* libjsi.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libjschelpers.a; - remoteRef = 3DAD3EAC1DF850E9000B6D8A /* PBXContainerItemProxy */; + path = libjsi.a; + remoteRef = 5CAF6C072327F2F100B5A09F /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 3DAD3EAF1DF850E9000B6D8A /* libjschelpers.a */ = { + 5CAF6C0A2327F2F100B5A09F /* libjsiexecutor.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; - path = libjschelpers.a; - remoteRef = 3DAD3EAE1DF850E9000B6D8A /* PBXContainerItemProxy */; + path = libjsiexecutor.a; + remoteRef = 5CAF6C092327F2F100B5A09F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5CAF6C0C2327F2F100B5A09F /* libjsi-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libjsi-tvOS.a"; + remoteRef = 5CAF6C0B2327F2F100B5A09F /* PBXContainerItemProxy */; + sourceTree = BUILT_PRODUCTS_DIR; + }; + 5CAF6C0E2327F2F100B5A09F /* libjsiexecutor-tvOS.a */ = { + isa = PBXReferenceProxy; + fileType = archive.ar; + path = "libjsiexecutor-tvOS.a"; + remoteRef = 5CAF6C0D2327F2F100B5A09F /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; 5E9157331DD0AC6500FF2AA8 /* libRCTAnimation.a */ = { @@ -1002,20 +1000,6 @@ remoteRef = 62796271212124D500CFE32D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 62EDFB3C2019B8C000C0628D /* libfishhook.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libfishhook.a; - remoteRef = 62EDFB3B2019B8C000C0628D /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 62EDFB3E2019B8C000C0628D /* libfishhook-tvOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libfishhook-tvOS.a"; - remoteRef = 62EDFB3D2019B8C000C0628D /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 62EDFB4E2019B8C000C0628D /* libthird-party.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1044,20 +1028,6 @@ remoteRef = 62EDFB532019B8C000C0628D /* PBXContainerItemProxy */; sourceTree = BUILT_PRODUCTS_DIR; }; - 62EDFB562019B8C000C0628D /* libprivatedata.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = libprivatedata.a; - remoteRef = 62EDFB552019B8C000C0628D /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; - 62EDFB582019B8C000C0628D /* libprivatedata-tvOS.a */ = { - isa = PBXReferenceProxy; - fileType = archive.ar; - path = "libprivatedata-tvOS.a"; - remoteRef = 62EDFB572019B8C000C0628D /* PBXContainerItemProxy */; - sourceTree = BUILT_PRODUCTS_DIR; - }; 78C398B91ACF4ADC00677621 /* libRCTLinking.a */ = { isa = PBXReferenceProxy; fileType = archive.ar; @@ -1192,7 +1162,6 @@ DEAD_CODE_STRIPPING = NO; DEVELOPMENT_TEAM = 8X2A38Q9VD; HEADER_SEARCH_PATHS = ( - "$(inherited)", "$(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule/", "$(SRCROOT)/../node_modules/jcore-react-native/ios/RCTJCoreModule", ); @@ -1203,9 +1172,9 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = io.jiguang.hxhg; + PRODUCT_BUNDLE_IDENTIFIER = com.jmessage.sdk; PRODUCT_NAME = PushDemo; - PROVISIONING_PROFILE_SPECIFIER = JIGUANGSDK; + PROVISIONING_PROFILE_SPECIFIER = "com.jmessage.sdk-dev"; VERSIONING_SYSTEM = "apple-generic"; }; name = Debug; @@ -1219,7 +1188,6 @@ CURRENT_PROJECT_VERSION = 1; DEVELOPMENT_TEAM = 8X2A38Q9VD; HEADER_SEARCH_PATHS = ( - "$(inherited)", "$(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule/", "$(SRCROOT)/../node_modules/jcore-react-native/ios/RCTJCoreModule", ); @@ -1230,9 +1198,9 @@ "-ObjC", "-lc++", ); - PRODUCT_BUNDLE_IDENTIFIER = io.jiguang.hxhg; + PRODUCT_BUNDLE_IDENTIFIER = com.jmessage.sdk; PRODUCT_NAME = PushDemo; - PROVISIONING_PROFILE_SPECIFIER = JIGUANGSDK; + PROVISIONING_PROFILE_SPECIFIER = "com.jmessage.sdk-dev"; VERSIONING_SYSTEM = "apple-generic"; }; name = Release; @@ -1246,7 +1214,10 @@ CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; DEBUG_INFORMATION_FORMAT = dwarf; + DEVELOPMENT_TEAM = ""; ENABLE_TESTABILITY = YES; GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( @@ -1267,6 +1238,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.PushDemo-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 9.2; @@ -1282,8 +1254,11 @@ CLANG_WARN_DOCUMENTATION_COMMENTS = YES; CLANG_WARN_INFINITE_RECURSION = YES; CLANG_WARN_SUSPICIOUS_MOVE = YES; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; COPY_PHASE_STRIP = NO; DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + DEVELOPMENT_TEAM = ""; GCC_NO_COMMON_BLOCKS = YES; HEADER_SEARCH_PATHS = ( "$(inherited)", @@ -1303,6 +1278,7 @@ ); PRODUCT_BUNDLE_IDENTIFIER = "com.facebook.REACT.PushDemo-tvOS"; PRODUCT_NAME = "$(TARGET_NAME)"; + PROVISIONING_PROFILE_SPECIFIER = ""; SDKROOT = appletvos; TARGETED_DEVICE_FAMILY = 3; TVOS_DEPLOYMENT_TARGET = 9.2; diff --git a/example/ios/PushDemo/AppDelegate.m b/example/ios/PushDemo/AppDelegate.m index 71e3f89e..fd5c52fe 100644 --- a/example/ios/PushDemo/AppDelegate.m +++ b/example/ios/PushDemo/AppDelegate.m @@ -39,7 +39,7 @@ - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:( // ReactNative环境配置 NSURL *jsCodeLocation = [NSURL URLWithString:@"http://10.224.36.16:8081/index.bundle?platform=ios&dev=true"]; RCTRootView *rootView = [[RCTRootView alloc] initWithBundleURL:jsCodeLocation - moduleName:@"ReactNative-JPush" + moduleName:@"JPush-RN" initialProperties:nil launchOptions:launchOptions]; rootView.backgroundColor = [[UIColor alloc] initWithRed:1.0f green:1.0f blue:1.0f alpha:1]; diff --git a/example/ios/PushDemo/Info.plist b/example/ios/PushDemo/Info.plist index 7da822ad..1cc0c4cd 100644 --- a/example/ios/PushDemo/Info.plist +++ b/example/ios/PushDemo/Info.plist @@ -31,10 +31,6 @@ NSLocationWhenInUseUsageDescription - UIBackgroundModes - - remote-notification - UILaunchStoryboardName LaunchScreen UIRequiredDeviceCapabilities From fc1f3bae370bc053684dd4f6180f4a3ed6324889 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A9=B9=E5=BC=BA?= Date: Tue, 10 Sep 2019 23:08:47 +0800 Subject: [PATCH 3/4] =?UTF-8?q?JS-=E6=9B=B4=E6=96=B0example?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- example/app.json | 4 ++-- example/package.json | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/example/app.json b/example/app.json index 23e891a9..8ffff9ab 100644 --- a/example/app.json +++ b/example/app.json @@ -1,4 +1,4 @@ { - "name": "ReactNative-JPush", - "displayName": "ReactNative-JPush" + "name": "JPush-RN", + "displayName": "JPush-RN" } diff --git a/example/package.json b/example/package.json index 686e9832..629ba66c 100644 --- a/example/package.json +++ b/example/package.json @@ -1,5 +1,5 @@ { - "name": "example", + "name": "JPush-RN", "version": "0.0.1", "private": true, "scripts": { From a410a773afccd894df8bbe1ff1297d61a368c98a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=A9=B9=E5=BC=BA?= Date: Tue, 10 Sep 2019 23:09:09 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 114 ++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 81 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index e2fbb596..774fd46d 100644 --- a/README.md +++ b/README.md @@ -8,9 +8,9 @@ npm install jpush-react-native --save * 注意:如果项目里没有jcore-react-native,需要安装 -``` -npm install jcore-react-native --save -``` + ``` + npm install jcore-react-native --save + ``` ## 2. 配置 @@ -18,45 +18,93 @@ npm install jcore-react-native --save * build.gradle -``` -android { - defaultConfig { - applicationId "yourApplicationId" //在此替换你的应用包名 - ... - manifestPlaceholders = [ - JPUSH_APPKEY: "yourAppKey", //在此替换你的APPKey - JPUSH_CHANNEL: "yourChannel" //在此替换你的channel - ] - } - } -``` + ``` + android { + defaultConfig { + applicationId "yourApplicationId" //在此替换你的应用包名 + ... + manifestPlaceholders = [ + JPUSH_APPKEY: "yourAppKey", //在此替换你的APPKey + JPUSH_CHANNEL: "yourChannel" //在此替换你的channel + ] + } + } + ``` -``` -dependencies { - ... - implementation project(':jpush-react-native') // 添加 jpush 依赖 - implementation project(':jcore-react-native') // 添加 jcore 依赖 - } -``` + ``` + dependencies { + ... + implementation project(':jpush-react-native') // 添加 jpush 依赖 + implementation project(':jcore-react-native') // 添加 jcore 依赖 + } + ``` * AndridManifest.xml -``` - - -``` + ``` * setting.gradle -``` -include ':jpush-react-native' - project(':jpush-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jpush-react-native/android') - include ':jcore-react-native' - project(':jcore-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jcore-react-native/android') -``` + ``` + include ':jpush-react-native' + project(':jpush-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jpush-react-native/android') + include ':jcore-react-native' + project(':jcore-react-native').projectDir = new File(rootProject.projectDir, '../node_modules/jcore-react-native/android') + ``` ###2.2 iOS + +* Libraries + + ``` + Add Files to "your project name" + node_modules/jcore-react-native/ios/RCTJCoreModule/ + node_modules/jpush-react-native/ios/RCTJPushModule/ + ``` + +* Capabilities + + ``` + Push Notification --- ON + ``` + +* Build Settings + + ``` + All --- Search Paths --- Header Search Paths --- + + $(SRCROOT)/../node_modules/jcore-react-native/ios/RCTJCoreModule/ + $(SRCROOT)/../node_modules/jpush-react-native/ios/RCTJPushModule/ + ``` + +* Build Phases + + ``` + libz.tbd + libresolv.tbd + UserNotifications.framework + + ``` + +## 3. 引用 + +### 3.1 Android + +参考:[MainApplication.java](https://github.com/jpush/jpush-react-native/tree/master/example/android/app/src/main/java/com/example/MainApplication) + +### 3.2 iOS + +参考:[AppDelegate.m](https://github.com/jpush/jpush-react-native/tree/master/example/ios/PushDemo/AppDelegate.m) + +## 4. API + +详见:[index.js](https://github.com/jpush/jpush-react-native/blob/master/index.js) + + +