Skip to content

Commit c1c1f48

Browse files
committed
添加华为推送
修改推送的配置方式
1 parent c58f7b8 commit c1c1f48

File tree

6 files changed

+103
-111
lines changed

6 files changed

+103
-111
lines changed

README.md

Lines changed: 31 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,9 @@ public class MainActivity extends ReactActivity {
7575

7676
```java
7777
...
78-
import com.netease.im.RNNeteaseImPackage; // 在public class MainApplication之前import
78+
import com.netease.im.RNNeteaseImPackage;
7979
import com.netease.im.IMApplication;
80+
import com.netease.nimlib.sdk.mixpush.MixPushConfig;
8081

8182
public class MainApplication extends Application implements ReactApplication {
8283

@@ -101,9 +102,16 @@ public class MainApplication extends Application implements ReactApplication {
101102
}
102103
@Override
103104
public void onCreate() {
104-
   //初始化方法appId以及appKey在小米开放平台获取,小米推送证书名称在网易云信后台设置
105-
   IMApplication.setDebugAble(BuildConfig.DEBUG);
106-
   IMApplication.init(this, MainActivity.class,R.drawable.ic_stat_notify_msg,new   IMApplication.MiPushConfig("小米推送证书名称","小米推送appId","小米推送的appKey"));
105+
// IMApplication.setDebugAble(BuildConfig.DEBUG);
106+
// 推送配置,没有可传null
107+
MixPushConfig config = new MixPushConfig();
108+
// 小米证书配置,没有可不填
109+
config.xmAppId = "";
110+
config.xmAppKey = "";
111+
config.xmCertificateName = "";
112+
// 华为推送配置,没有可不填
113+
config.hwCertificateName = "";
114+
   IMApplication.init(this, MainActivity.class,R.drawable.ic_stat_notify_msg, config);
107115
...
108116
}
109117
}
@@ -114,14 +122,10 @@ public class MainApplication extends Application implements ReactApplication {
114122
#### iOS配置
115123
install with CocoaPods
116124
```
117-
pod 'NIMSDK', '5.6.0'
125+
pod 'NIMSDK', '6.2.0'
118126
pod 'CocoaLumberjack', '~> 2.0.0-rc2'
119127
```
120-
Run `pod install`
121-
122-
在工程target的`Build Phases->Link Binary with Libraries`中加入`、libsqlite3.0.tbd、libc++.tbd、libz.tbd、CoreTelephony.framework、AVFoundation.framework、CoreMedia.framework、CoreMotion.framework`
123-
124-
128+
进入/ios目录执行 `pod install`
125129

126130
在你工程的`AppDelegate.m`文件中添加如下代码:
127131

@@ -204,18 +208,18 @@ manifestPlaceholders = [
204208
205209
......
206210
207-
<!-- SDK 权限申明, 第三方 APP 接入时,请将 com.im.demo 替换为自己的包名 -->
211+
<!-- SDK 权限申明 -->
208212
<!-- 和下面的 uses-permission 一起加入到你的 AndroidManifest 文件中。 -->
209213
<permission
210-
android:name="com.im.demo.permission.RECEIVE_MSG"
214+
android:name="${applicationId}.permission.RECEIVE_MSG"
211215
android:protectionLevel="signature"/>
212-
<!-- 接收 SDK 消息广播权限, 第三方 APP 接入时,请将 com.im.demo 替换为自己的包名 -->
213-
<uses-permission android:name="com.im.demo.permission.RECEIVE_MSG"/>
216+
<!-- 接收 SDK 消息广播权限 -->
217+
<uses-permission android:name="${applicationId}.permission.RECEIVE_MSG"/>
214218
<!-- 小米推送 -->
215219
<permission
216220
android:name="com.im.demo.permission.MIPUSH_RECEIVE"
217221
android:protectionLevel="signature"/>
218-
<uses-permission android:name="com.im.demo.permission.MIPUSH_RECEIVE"/>
222+
<uses-permission android:name="${applicationId}.permission.MIPUSH_RECEIVE"/>
219223
220224
......
221225
< application
@@ -224,15 +228,21 @@ manifestPlaceholders = [
224228
<meta-data
225229
android:name="com.netease.nim.appKey"
226230
android:value="App Key" />
227-
<!--添加新的 IPC 数据共享机制,替换不安全的多进程读写 SharedPreference-->
228-
<provider
229-
android:name="com.netease.nimlib.ipc.NIMContentProvider"
230-
android:authorities="com.im.demo.ipc.provider"
231-
android:exported="false"
232-
android:process=":core" />
233231
232+
233+
```
234+
`build.gradle`里,添加如下代码:
235+
```
236+
allprojects {
237+
repositories {
238+
239+
// 添加行
240+
maven {url 'http://developer.huawei.com/repo/'}
241+
}
242+
}
234243
```
235244

245+
236246
## 如何使用
237247

238248
### 引入包

android/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,5 +34,6 @@ repositories {
3434
dependencies {
3535
compile fileTree(include: '*.jar', dir: 'libs')
3636
compile 'com.facebook.react:react-native:+'
37+
implementation 'com.huawei.android.hms:push:2.6.3.301'
3738
}
3839

android/react-native-android.md

Lines changed: 0 additions & 60 deletions
This file was deleted.

android/src/main/AndroidManifest.xml

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
2+
xmlns:tools="http://schemas.android.com/tools"
23
package="com.netease.im">
34

45
<!-- 加入应用需要的权限 -->
@@ -9,7 +10,8 @@
910
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
1011
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
1112
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
12-
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
13+
<uses-permission android:name="android.permission.WRITE_SETTINGS"
14+
tools:ignore="ProtectedPermissions" />
1315

1416
<!-- 手机状态 -->
1517
<uses-permission android:name="android.permission.GET_TASKS"/>
@@ -18,7 +20,8 @@
1820
<uses-permission android:name="android.permission.WAKE_LOCK"/>
1921
<uses-permission android:name="android.permission.BLUETOOTH"/>
2022
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
21-
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
23+
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"
24+
tools:ignore="ProtectedPermissions" />
2225
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
2326

2427
<!-- 读写文件 -->
@@ -30,9 +33,15 @@
3033
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
3134
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
3235

33-
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"/>
36+
<uses-permission android:name="android.permission.CLEAR_APP_CACHE"
37+
tools:ignore="ProtectedPermissions" />
3438
<uses-permission android:name="android.permission.GET_PACKAGE_SIZE"/>
3539

40+
<!--以下两处 {你的包名} 改开发者App的包名-->
41+
<permission android:name="${applicationId}.permission.MIPUSH_RECEIVE"
42+
android:protectionLevel="signature" />
43+
<uses-permission android:name="${applicationId}.permission.MIPUSH_RECEIVE" />
44+
3645
<application>
3746

3847
<!--适配 Android O 版本后台运行机制-->
@@ -138,6 +147,33 @@
138147
<action android:name="com.xiaomi.mipush.ERROR"/>
139148
</intent-filter>
140149
</receiver>
150+
<!--华为推送-->
151+
<provider
152+
android:name="com.huawei.hms.update.provider.UpdateProvider"
153+
android:authorities="${applicationId}.hms.update.provider"
154+
android:exported="false"
155+
android:grantUriPermissions="true" />
156+
<!-- 云信华为推送消息广播 -->
157+
<receiver android:name="com.netease.nimlib.mixpush.hw.HWPushReceiver">
158+
<intent-filter android:priority="0x7fffffff">
159+
<action android:name="com.huawei.android.push.intent.REGISTRATION" />
160+
<action android:name="com.huawei.android.push.intent.RECEIVE" />
161+
<action android:name="com.huawei.android.push.intent.CLICK" />
162+
<action android:name="com.huawei.intent.action.PUSH_STATE" />
163+
</intent-filter>
164+
<meta-data
165+
android:name="CS_cloud_ablitity"
166+
android:value="successRateAnalytics" />
167+
</receiver>
168+
169+
<!-- 兼容性广播 -->
170+
<receiver android:name="com.huawei.hms.support.api.push.PushReceiver">
171+
<intent-filter>
172+
<!-- 接收通道发来的通知栏消息,兼容老版本Push -->
173+
<action android:name="com.huawei.intent.action.PUSH" />
174+
</intent-filter>
175+
</receiver>
176+
<!--网络-->
141177
<receiver android:name=".receiver.NetworkReceiver">
142178
<intent-filter>
143179
<action android:name="android.net.conn.CONNECTIVITY_CHANGE"/>

android/src/main/java/com/netease/im/IMApplication.java

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -44,28 +44,29 @@
4444
import com.netease.nimlib.sdk.uinfo.UserInfoProvider;
4545
import com.netease.nimlib.sdk.util.NIMUtil;
4646

47+
4748
/**
4849
* Created by dowin on 2017/4/28.
4950
*/
5051

5152
public class IMApplication {
5253

5354

54-
public static class MiPushConfig {
55-
56-
public String certificate;
57-
public String appID;
58-
public String appKey;
59-
60-
/**
61-
* 注册小米推送证书名称 、推送appID 以及在云信管理后台添加的appKey
62-
*/
63-
public MiPushConfig(String certificate, String appID, String appKey) {
64-
this.certificate = certificate;
65-
this.appID = appID;
66-
this.appKey = appKey;
67-
}
68-
}
55+
// public static class MiPushConfig {
56+
//
57+
// public String certificate;
58+
// public String appID;
59+
// public String appKey;
60+
//
61+
// /**
62+
// * 注册小米推送证书名称 、推送appID 以及在云信管理后台添加的appKey
63+
// */
64+
// public MiPushConfig(String certificate, String appID, String appKey) {
65+
// this.certificate = certificate;
66+
// this.appID = appID;
67+
// this.appKey = appKey;
68+
// }
69+
// }
6970

7071
// context
7172
private static Context context;
@@ -87,21 +88,20 @@ public MiPushConfig(String certificate, String appID, String appKey) {
8788
private static StatusBarNotificationConfig statusBarNotificationConfig;
8889
private static boolean DEBUG = false;
8990

90-
public static void init(Context context, Class mainActivityClass, @DrawableRes int notify_msg_drawable_id, MiPushConfig miPushConfig) {
91+
public static void init(Context context, Class mainActivityClass, @DrawableRes int notify_msg_drawable_id, MixPushConfig miPushConfig) {
9192
IMApplication.context = context.getApplicationContext();
9293
IMApplication.mainActivityClass = mainActivityClass;
9394
IMApplication.notify_msg_drawable_id = notify_msg_drawable_id;
9495

9596
// 注册小米推送appID 、appKey 以及在云信管理后台添加的小米推送证书名称,该逻辑放在 NIMClient init 之前
96-
if (miPushConfig != null) {
97-
MixPushConfig mixPushConfig = new MixPushConfig();
98-
mixPushConfig.xmCertificateName = miPushConfig.certificate;
99-
mixPushConfig.xmAppId = miPushConfig.appID;
100-
mixPushConfig.xmAppKey = miPushConfig.appKey;
101-
NIMPushClient.initPush(new MixPushConfig());
102-
}
103-
104-
NIMClient.init(context, getLoginInfo(), getOptions(context));
97+
// if (miPushConfig != null) {
98+
// MixPushConfig mixPushConfig = new MixPushConfig();
99+
// mixPushConfig.xmCertificateName = miPushConfig.certificate;
100+
// mixPushConfig.xmAppId = miPushConfig.appID;
101+
// mixPushConfig.xmAppKey = miPushConfig.appKey;
102+
// NIMPushClient.initPush(new MixPushConfig());
103+
// }
104+
NIMClient.init(context, getLoginInfo(), getOptions(context, miPushConfig));
105105
// crash handler
106106
// AppCrashHandler.getInstance(context);
107107
if (NIMUtil.isMainProcess(IMApplication.context)) {
@@ -161,7 +161,7 @@ public static String getSdkStorageRooPath() {
161161
return Environment.getExternalStorageDirectory() + "/" + context.getPackageName() + "/nim";
162162
}
163163

164-
private static SDKOptions getOptions(Context context) {
164+
private static SDKOptions getOptions(Context context, MixPushConfig miPushConfig) {
165165
SDKOptions options = new SDKOptions();
166166

167167
// 如果将新消息通知提醒托管给SDK完成,需要添加以下配置。
@@ -195,6 +195,11 @@ private static SDKOptions getOptions(Context context) {
195195
//teamNotificationMessageMarkUnread 登录选项添加群通知消息是否计入未读数开关
196196
//sdkStorageRootPath 配置的外置存储缓存根目录
197197

198+
// 推送配置
199+
if(miPushConfig!=null) {
200+
options.mixPushConfig = miPushConfig;
201+
}
202+
198203
return options;
199204
}
200205

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11

22
{
33
"name": "react-native-netease-im",
4-
"version": "2.0.9",
4+
"version": "2.1.0",
55
"description": "网易云信ReactNative插件",
66
"main": "index.js",
77
"scripts": {

0 commit comments

Comments
 (0)