集成華為推送
下載環(huán)信最新的SDK
將項(xiàng)目中的
hmspush模塊導(dǎo)入自己的項(xiàng)目
-
環(huán)信目錄.PNG
注意:不要修改模塊的項(xiàng)目依賴版本
-
- 修改模塊
AndroidManifest中的配置
<!-- 接入HMSSDK 需要注冊的appid參數(shù)。value的值中“10492024”用實(shí)際申請的appid替換,來源于開發(fā)者聯(lián)盟網(wǎng)站應(yīng)用的權(quán)益詳情。格式 android:value="appid=xxxxxx"-->
<meta-data
android:name="com.huawei.hms.client.appid"
android:value="appid=10492024" />
<!-- 接入HMSSDK 需要注冊的provider,authorities 一定不能與其他應(yīng)用一樣,所以這邊 com.hyphenate.chatuidemo 要替換上您應(yīng)用的包名-->
<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 一定不能與其他應(yīng)用一樣,所以這邊 com.hyphenate.chatuidemo 要替換上您應(yīng)用的包名-->
<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.包名為你申請華為推送時注冊的包名
華為開放平臺鏈接
- 環(huán)信后臺配置推送證書
- 初始化華為推送SDK
在Application中初始化華為 HMS 推送服務(wù)
HMSPushHelper.getInstance().initHMSAgent(application);
- 在自己項(xiàng)目的主頁獲取華為推送的
token
//用于獲取華為推送的token
HMSPushHelper.getInstance().getHMSToken(activity);
- 在
AndroidManifest中注冊廣播接收者接收token
<!--華為 HMS Config-->
<!--接入HMSSDK PUSH模塊需要注冊,第三方相關(guān) :接收Push消息(注冊、Push消息、Push連接狀態(tài))廣播,
此receiver類需要開發(fā)者自己創(chuàng)建并繼承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"/>
<!-- 可選,用于點(diǎn)擊通知欄或通知欄上的按鈕后觸發(fā) onEvent 回調(diào) -->
<action android:name="com.huawei.android.push.intent.CLICK"/>
<!-- 可選,查看 PUSH 通道是否連接,不查看則不需要 -->
<action android:name="com.huawei.intent.action.PUSH_STATE"/>
</intent-filter>
</receiver>
- 在環(huán)信上注冊華為推送
Token
public class HMSPushReceiver extends PushReceiver {
private static final String TAG = HMSPushReceiver.class.getSimpleName();
@Override
public void onToken(Context context, String token, Bundle extras){
//沒有失敗回調(diào),假定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!");
}
}
}
- 使用華為控制后臺發(fā)送推送測試
這里面需要拿到上面返回的Token
第一次接收離線消息的時候可能會有延時
參考:
集成小米推送
- 下載最新的小米SDK
- 解壓文件,獲取最新的推送
jar包
- 2.PNG
- 添加權(quán)限
<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的包名--
- 添加服務(wù)相關(guān)服務(wù)
<!-- 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為環(huán)信默認(rèn)實(shí)現(xiàn)的廣播接收者
- 在環(huán)信初始化的時候,在
Options中配置小米推送的key
options.setMipushConfig(mipushAppId, mipushAppKey);
- 打開環(huán)信的日志功能
options.setConsoleLog(true);
- 在控制臺過濾
send device token to server獲取小米推送Token
- 3.PNG