OPPO推送服務內建
- 前言
- 正文
- 一、建立AS應用
- 二、建立OPPO平台應用
- 三、編輯推送消息
- 1. SDK內建
- 2. AndroidManifest配置
- 3. 配置應用資訊
- 4. 編輯推送消息
- 結語
前言
為了豐富應用推送的場景和國産大廠裝置,在我有這個條件的情況下,相關機型的文章我都會寫一遍,這一篇就寫一下OPPO的推送服務內建,我本身是榮耀的手機,OPPO是借的朋友的舊手機來測試對接的,手機名稱是OPPO Find X,ColorOS版本是V7.1,Android版本是10,下面進入正文。
正文
運作效果圖,如果你還滿意,請繼續往下看。

和之前的華為一樣,你要使用OPPO的推送服務首先要成為OPPO開發者,
這裡的賬号要為企業賬号,個人開發者賬号是不能進行應用建立的,同理不能對接推送服務,是以必須要是企業開發者賬号才行。起碼在OPPO開方平台上,需要這個企業開發者賬号才能做應用的推送。登入賬号
選擇推送服務。
申請推送,最好不要在已經上線的項目上改動,是以你可以建立一個應用來做推送的測試。
一、建立AS應用
這裡的包名先複制一下,點選Finish。建立完成之後先運作到自己手機上,請不要使用模拟器或者虛拟機。
在手機上運作好了之後,安裝所需要擷取OPPOSign的應用,下載下傳APK簽名工具下載下傳後是一個rar檔案,解壓之後通過QQ發送到自己的是手機上,然後安裝這個APK,安裝好之後打開,輸入剛才的包名,如下:
輸入包名,然後點選擷取簽名按鈕,就會出現簽名資料,長按複制一下。
二、建立OPPO平台應用
點選建立應用
建立好了
下面給這個應用開通推送權限,
點選這個應用
點選申請開通
勾選上,然後送出申請。
等待稽核通過,這個稽核的時間大概是一天。
現在稽核通過了,點選進入應用。
三、編輯推送消息
現在保證你的手機上安裝了這個測試App,然後來編輯這個推送消息。
然後你會發現這個地方需要輸入這個RegistrationId,它是應用在對應裝置的上唯一ID,不同的應用RegistrationID不同,該ID在使用者裝置刷機、解除安裝應用、或裝置長時間無連接配接時失效。沒有它你是無法推送消息的,那麼怎麼來擷取這個RegistrationId呢?
1. SDK內建
之前下載下傳的簽名檔案夾裡面有一個OPPO推送SDK檔案夾
将這個aar檔案複制到你項目的libs下。
然後打開app下的build.gradle進行配置,兩處修改,代碼如下:
{
flatDir {
dirs 'libs'
}
}
implementation(name: 'com.heytap.msp', ext: 'aar')
2. AndroidManifest配置
打開你的AndroidManifest.xml,OPPO推送服務SDK 2.1.0版本支援的最低安卓版本為Android 4.4系統。
<uses-sdk android:minSdkVersion="19"/>
然後是權限,如果應用無透傳權限,則不用配置
android:name="com.coloros.mcs.permission.RECIEVE_MCS_MESSAGE"/>
<uses-permission android:name="com.heytap.mcs.permission.RECIEVE_MCS_MESSAGE"/>
最後是服務,推送服務元件注冊(如果應用無透傳權限,則不用配置)
android:name="com.heytap.msp.push.service.CompatibleDataMessageCallbackService"
android:permission="com.coloros.mcs.permission.SEND_MCS_MESSAGE">
<intent-filter>
<action android:name="com.coloros.mcs.action.RECEIVE_MCS_MESSAGE"/>
</intent-filter>
</service>
<!--相容Q版本-->
<service
android:name="com.heytap.msp.push.service.DataMessageCallbackService"
android:permission="com.heytap.mcs.permission.SEND_PUSH_MESSAGE">
<intent-filter>
<action android:name="com.heytap.mcs.action.RECEIVE_MCS_MESSAGE"/>
<action android:name="com.heytap.msp.push.RECEIVE_MCS_MESSAGE"/>
</intent-filter>
</service>
位置如下圖
3. 配置應用資訊
這裡我标注了三個,但是在App中其實隻要用到後面兩個,不需要用到AppId。現在先把這幾個參數配置到項目中,在com.llw.oppopush下建立一個AppParam,裡面的代碼如下:
package com.llw.oppopush;
/**
* 應用參數
* @author llw
*/
public class AppParam {
/**
* 背景為每個應用配置設定的id,用于唯一辨別一個應用,在程式代碼中用不到
*/
public static String appId = "30549403";
/**
* appKey,用于向push伺服器進行注冊,
*/
public static String appKey = "23e64cae36364c14b3eb1f931a1bec21";
/**
* appSecret,用于進行注冊和消息加解密,
*/
public static String appSecret = "75cddfa038e94fdd8c6122a75cbf74cb";
}
記得把值改成自己平台上的。然後建立一個,然後在com.llw.oppopush包下建立一個MyApplication,繼承Application。在onCreate方法中,完成SDK的初始化。
package com.llw.oppopush;
import android.app.Application;
import android.util.Log;
import com.heytap.msp.push.HeytapPushManager;
import com.heytap.msp.push.callback.ICallBackResultService;
public class MyApplication extends Application {
private static final String TAG = "MyApplication";
@Override
public void onCreate() {
super.onCreate();
//初始化
HeytapPushManager.init(this, true);
HeytapPushManager.register(this, AppParam.appKey, AppParam.appSecret, mPushCallback);//setPushCallback接口也可設定callback
HeytapPushManager.requestNotificationPermission();
}
/**
* SDK操作回調處理
*/
private ICallBackResultService mPushCallback = new ICallBackResultService() {
@Override
public void onRegister(int code, String s) {
if (code == 0) {
Log.d(TAG, "注冊成功,registerId:" + s);
} else {
Log.d(TAG, "注冊失敗,code=" + code + ",msg=" + s);
}
}
@Override
public void onUnRegister(int code) {
if (code == 0) {
Log.d(TAG, "登出成功,code=" + code);
} else {
Log.d(TAG, "登出失敗,code=" + code);
}
}
@Override
public void onGetPushStatus(final int code, int status) {
if (code == 0 && status == 0) {
Log.d(TAG,"Push狀态正常,code=" + code + ",status=" + status);
} else {
Log.d(TAG, "Push狀态錯誤,code=" + code + ",status=" + status);
}
}
@Override
public void onGetNotificationStatus(final int code, final int status) {
if (code == 0 && status == 0) {
Log.d(TAG, "通知狀态正常,code=" + code + ",status=" + status);
} else {
Log.d(TAG, "通知狀态錯誤,code=" + code + ",status=" + status);
}
}
@Override
public void onSetPushTime(final int code, final String s) {
Log.d(TAG, "SetPushTime,code=" + code + ",result:" + s);
}
};
}
下面在AndroidManifest.xml中配置
下面運作一下:
點選允許就可以了。然後再看看你的日志欄。
這裡列印了一個RegistrationId,這正是我們所需要的。
4. 編輯推送消息
這裡是不能出現test或者測試的字樣的
往下走。輸入剛才拿到的RegistrationId
其他的内容就可以不填了,點選下一步,然後送出這個稽核。
一般來說你送出稽核之後馬上就會通過稽核,然後你切換到全部,點選查詢就能檢視到之前送出的消息稽核,如上圖已經通過了稽核,點選右邊的詳情。
進入稽核詳情頁面,這裡就是你之前編輯的内容,下面有一個預推測試,點選之後你可以輸入之前的RegisterId。
然後點選這個預推測試按鈕,你的手機上就會收到一條通知,無論你目前的應用有沒有在背景運作,都可以收到這個通知。息屏的情況下同樣可以收到通知,效果如下圖所示:
