集成华为推送
-
下载环信最新的SDK
-
将项目中的
hmspush
模块导入自己的项目
-
环信目录.PNG
注意:不要修改模块的项目依赖版本
-
环信目录.PNG
- 修改模块
AndroidManifest
中的配置
<!-- 接入HMSSDK 需要注册的appid参数。value的值中“10492024”用实际申请的appid替换,来源于开发者联盟网站应用的权益详情。格式 android:value="appid=xxxxxx"-->
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="appid=10492024" />
<!-- 接入HMSSDK 需要注册的provider,authorities 一定不能与其他应用一样,所以这边 com.hyphenate.chatuidemo 要替换上您应用的包名-->
<provider
android:name="com.huawei.hms.update.provider.UpdateProvider"
android:authorities="com.hyphenate.chatuidemo.hms.update.provider"
android:exported="false"
android:grantUriPermissions="true" />
<!-- 接入HMSSDK 需要注册的provider,authorities 一定不能与其他应用一样,所以这边 com.hyphenate.chatuidemo 要替换上您应用的包名-->
<provider
android:name="com.huawei.updatesdk.fileprovider.UpdateSdkFileProvider"
android:authorities="com.hyphenate.chatuidemo.updateSdk.fileProvider"
android:exported="false"
android:grantUriPermissions="true"/>
<!-- 使用 HMSAgent 代码接入HMSSDK 需要注册的activity-->
注意:
1.appid的value值要使用appid=你申请的华为推送的APP ID
2.包名为你申请华为推送时注册的包名
华为开放平台链接
- 环信后台配置推送证书
- 初始化华为推送SDK
在Application中初始化华为 HMS 推送服务
HMSPushHelper.getInstance().initHMSAgent(application);
- 在自己项目的主页获取华为推送的
token
//用于获取华为推送的token
HMSPushHelper.getInstance().getHMSToken(activity);
- 在
AndroidManifest
中注册广播接收者接收token
<!--华为 HMS Config-->
<!--接入HMSSDK PUSH模块需要注册,第三方相关 :接收Push消息(注册、Push消息、Push连接状态)广播,
此receiver类需要开发者自己创建并继承com.huawei.hms.support.api.push.PushReceiver类,
参考示例代码中的类:com.huawei.hmsagent.HuaweiPushRevicer-->
<receiver android:name=".HMSPushReceiver">
<intent-filter>
<!-- 必须,用于接收 TOKEN -->
<action android:name="com.huawei.android.push.intent.REGISTRATION"/>
<!-- 必须,用于接收消息 -->
<action android:name="com.huawei.android.push.intent.RECEIVE"/>
<!-- 可选,用于点击通知栏或通知栏上的按钮后触发 onEvent 回调 -->
<action android:name="com.huawei.android.push.intent.CLICK"/>
<!-- 可选,查看 PUSH 通道是否连接,不查看则不需要 -->
<action android:name="com.huawei.intent.action.PUSH_STATE"/>
</intent-filter>
</receiver>
- 在环信上注册华为推送
Token
public class HMSPushReceiver extends PushReceiver {
private static final String TAG = HMSPushReceiver.class.getSimpleName();
@Override
public void onToken(Context context, String token, Bundle extras){
//没有失败回调,假定token失败时token为null
if(token != null && !token.equals("")){
EMLog.d("HWHMSPush", "register huawei hms push token success token:" + token);
EMClient.getInstance().sendHMSPushTokenToServer("你申请的华为推送的APP ID", token);
}else{
EMLog.e("HWHMSPush", "register huawei hms push token fail!");
}
}
}
- 使用华为控制后台发送推送测试
这里面需要拿到上面返回的Token
第一次接收离线消息的时候可能会有延时
参考:
集成小米推送
- 下载最新的小米SDK
- 解压文件,获取最新的推送
jar
包
- 2.PNG
- 添加权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.VIBRATE"/>
<permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE"
android:protectionLevel="signature" /> <!--这里com.xiaomi.mipushdemo改成app的包名-->
<uses-permission android:name="com.xiaomi.mipushdemo.permission.MIPUSH_RECEIVE" /><!--这里com.xiaomi.mipushdemo改成app的包名--
- 添加服务相关服务
<!-- mi push -->
<service
android:name="com.xiaomi.push.service.XMJobService"
android:enabled="true"
android:exported="false"
android:permission="android.permission.BIND_JOB_SERVICE"
android:process=":pushservice" />
<service
android:name="com.xiaomi.push.service.XMPushService"
android:enabled="true"
android:process=":pushservice" />
<service
android:name="com.xiaomi.mipush.sdk.PushMessageHandler"
android:enabled="true"
android:exported="true"
tools:ignore="ExportedService" />
<service
android:name="com.xiaomi.mipush.sdk.MessageHandleService"
android:enabled="true" />
<!--注:此service必须在2.2.5版本以后(包括2.2.5版本)加入-->
<receiver
android:name="com.xiaomi.push.service.receivers.NetworkStatusReceiver"
android:exported="true">
<intent-filter>
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
<receiver
android:name="com.xiaomi.push.service.receivers.PingReceiver"
android:exported="false"
android:process=":pushservice">
<intent-filter>
<action android:name="com.xiaomi.push.PING_TIMER" />
</intent-filter>
</receiver>
<receiver
android:name="com.hyphenate.chat.EMMipushReceiver"
android:exported="true"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="com.xiaomi.mipush.RECEIVE_MESSAGE" />
</intent-filter>
<intent-filter>
<action android:name="com.xiaomi.mipush.MESSAGE_ARRIVED" />
</intent-filter>
<intent-filter>
<action android:name="com.xiaomi.mipush.ERROR" />
</intent-filter>
</receiver>
<!-- mi push end -->
其中EMMipushReceiver为环信
默认实现的广播接收者
- 在环信初始化的时候,在
Options
中配置小米推送的key
options.setMipushConfig(mipushAppId, mipushAppKey);
- 打开环信的日志功能
options.setConsoleLog(true);
- 在控制台过滤
send device token to server
获取小米推送Token
- 3.PNG
网友评论