概述
本文主要介紹Android端輔助通道和彈窗問題的排查步驟。
詳細信息
參數檢查
登錄移動研發(fā)平臺EMAS,選擇移動推送后選擇對應的應用,單擊應用配置,確認各個平臺上的相關參數一一對應,填寫參數時請不要添加多余的空格。
終端集成確認
各通道初始化成功,可先在各廠商的控制臺推送測試,然后再使用阿里云控制臺或OpenAPI進行推送。
下面日志示例如果實際調試時不打印,在推送SDK初始化注冊之前,將調試日志打開:
CloudPushService pushService = PushServiceFactory.getCloudPushService();
pushService.setLogLevel(CloudPushService.LOG_DEBUG);//ogLevel 支持設置:CloudPushService.ERROR | CloudPushService.INFO | CloudPushService.DEBUG | CloudPushService.OFF(關閉Log)
pushService.register(applicationContext, new CommonCallback() {...};
華為通道
華為通道初始化成功,如下圖所示。若沒有注冊信息上報,確認注冊成功,返回結果中包含token
說明初始化成功。
小米通道
小米通道初始化成功,如下圖所示。
GCM/FCM通道
GCM/FCM通道初始化成功,可以看到以下日志信息:
05-19 19:18:44.530 19153-19177/com.xxx D/MPS:GcmRegister: token from register: eWIXLYCNP0Q:APA91bFUAgxj6XYf5okyoCBnRPw1UwITndzXrvPDgbdI2N44PYm17hFEBiNXNQJrJ8bOG_xjw3c3UPDAhzNMTLNjlAKcjUanKyLA6E3k4wEmgZuhgUT02UMmMvH2LVA1L2Z4-l-cT_Ug
OPPO通道
OPPO通道是否注冊成功,可以通過過濾MPS:OPush
關鍵字查看。注冊成功會打印“onRegister regid=****”相關日志,注冊失敗請檢查參數是否正確填入,阿里云控制臺上需要填寫OPPO的MasterSecret,而不是appsecret,若找不到OPPO的MasterSecret,請咨詢OPPO客服。
如果targetSdkVersion設置成26及以上,那么使用OPPO通道時需要設置NotificationChannel,NotificationChannel的相關介紹請參見Android 8.0以上設備接收不到推送通知,OPPO需要在推送控制臺創(chuàng)建一個通知渠道,NotificationChannel的ID需要填寫正確,各處都需要統(tǒng)一。
vivo通道
vivo通道是否注冊成功,可以通過過濾MPS:vPush
關鍵字查看,注冊成功會打印getRegId regId:**相關日志,否則檢查參數是否正確填入。
魅族通道
魅族通道初始化成功,可以看到以下日志信息:
說明:魅族控制臺必須配置回執(zhí)地址,詳情請參見魅族輔助通道集成。
檢查輔助彈窗配置
接入推送輔助通道,確保您使用最新的輔助通道擴展包。查看當前設備是否支持輔助彈窗:
- 小米輔助彈窗:支持V2.3.0及以上版本
- 華為輔助彈窗:支持V3.0.8及以上版本
- 華為彈窗當前只支持EmotionUI 4.1及以上版本
指定打開的托管彈窗Activity,需要繼承AndroidPopupActivity,并在AndroidManifest.xml中注冊時需要聲明屬性android:exported=true
。
import com.alibaba.sdk.android.push.AndroidPopupActivity;
public class PopupPushActivity extends AndroidPopupActivity {
static final String TAG = "PopupPushActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
/**
* 實現通知打開回調方法,獲取通知相關信息。
* @param title 標題
* @param summary 內容
* @param extMap 額外參數
*/
@Override
protected void onSysNoticeOpened(String title, String summary, Map<String, String> extMap) {
Log.d("OnMiPushSysNoticeOpened, title: " + title + ", content: " + summary + ", extMap: " + extMap);
}
}
服務器端配置
注意:推送測試階段建議不要使用全量推送,全量推送可能有統(tǒng)計新注冊設備的延遲,容易誤導用戶。接入階段建議按deviceID進行推送。
使用OpenAPI進行推送
-
OpenAPI 2.0的推送高級接口提供了
AndroidPopupActivity
、AndroidPopupTitle
和AndroidPopupBody
三個參數,分別用于設置輔助彈窗通知打開時跳轉的Activity、通知標題以及通知內容(注意:StoreOffline
參數也需要設置為true); -
輔助彈窗僅在當前廠商通道設備的應用后臺進程被清理時生效,對非接入廠商通道設備和在線的設備不生效。
-
當輔助彈窗生效時,推送接口的Title、Body、AndroidActivity以及額外參數設置中的功能性設置(如聲音、震動等)都不起作用;
PushRequest pushRequest = new PushRequest();
// 其余設置省略
// 推送類別-通知
pushRequest.setPushType("NOTICE");
// 標題
pushRequest.setTitle(dateFormat.format(new Date()));
// 內容
pushRequest.setBody("PushRequest body");
// 額外參數
pushRequest.setAndroidExtParameters("{\"k1\":\"android\",\"k2\":\"v2\"}");
// 設置輔助彈窗打開Activity
pushRequest.setAndroidPopupActivity("*****");
// 設置輔助彈窗通知標題
pushRequest.setAndroidPopupTitle("*****");
// 設置輔助彈窗通知內容
pushRequest.setAndroidPopupBody("*****");
// 設置離線存儲
pushRequest.setStoreOffline(true);
使用阿里云控制臺進行推送
登錄移動研發(fā)平臺EMAS,選擇移動推送后選擇對應的應用,在左側導航欄選擇創(chuàng)建消息>推送通知,在高級設置(選填)中,設置廠商通道必要參數,如下圖所示。
問題仍未解決
若上述步驟仍未能定位并解決問題,即在最后使用OpenAPI高級接口時還是無法推送到廠商設備,您可以通過以下方式咨詢問題,咨詢時請務必提供AppKey、messageID以及deviceID。
- 您可以提交工單,提交工單時請選擇移動推送類目。
- 或者加入釘釘群咨詢問題:
- 釘釘下載地址:單擊下載
- 釘釘群號:30959784
適用于
- 移動推送