Google推送通道集成
本文介紹如何接入Google推送通道。
準(zhǔn)備工作
已經(jīng)按照Android SDK接入完成了移動推送SDK的接入。
已經(jīng)在Firebase創(chuàng)建項目,如未創(chuàng)建請登錄Firebase創(chuàng)建項目,在左側(cè)導(dǎo)航欄選擇Cloud Messaging,進入Google推送服務(wù)。在當(dāng)前項目下新增App,下載對應(yīng)App的google-services.json文件。記錄google-services.json文件中的”project_number”, “mobilesdk_app_id”,“project_id”,“current_key”這四個key對應(yīng)的value, 分別記錄為sendId/applicationId/projectId/apiKey。
已經(jīng)在Firebase控制臺的項目設(shè)置中獲取服務(wù)器密鑰。如未獲取請參考:
已經(jīng)在EMAS控制臺配置了GCM/FCM服務(wù)器密鑰,如未配置,請登錄EMAS移動推送控制臺,設(shè)置您的GCM/FCM服務(wù)器密鑰,設(shè)置方法參見配置廠商通道密鑰。
第一步:將SDK添加到您的應(yīng)用
我們提供了Maven依賴和本地依賴兩種集成方式,方便您根據(jù)需要將SDK添加到您的應(yīng)用中。
建議開發(fā)者采用Maven依賴方式進行集成,配置簡單,不容易出問題,后續(xù)更新方便。
3.2.0及以上版輔助通道擴展包以aar形式透出,省去manifest文件配置,減少出錯概率。
3.2.2版本之前,OPPO通道依賴包已內(nèi)置在alicloud-android-third-push-oppo中,無需單獨添加。
1 Maven依賴方式
在您的模塊(應(yīng)用級)Gradle 文件(通常是<project>/<app-module>/build.gradle
)中,在dependencies
中添加SDK依賴。
請閱讀Android SDK版本說明,下載對應(yīng)版本SDK或獲取最新SDK配置信息。
dependencies {
implementation 'com.aliyun.ams:alicloud-android-third-push:x.x.x'
implementation 'com.aliyun.ams:alicloud-android-third-push-fcm:x.x.x'
}
2 本地依賴方式
2.1 下載SDK
參考下載和集成SDK,選擇移動推送進行下載,將SDK包內(nèi)所有文件拷貝至您的模塊(應(yīng)用級)的<project>/<app-module>/libs
目錄下。
2.2 添加SDK依賴
2.2.1 配置本地SDK目錄
在您的模塊(應(yīng)用級)Gradle 文件(通常是<project>/<app-module>/build.gradle
)中,添加本地SDK文件目錄地址。
repositories {
flatDir {
dirs 'libs'
}
}
2.2.2 添加SDK依賴
在您的模塊(應(yīng)用級)Gradle 文件(通常是<project>/<app-module>/build.gradle
)中,的dependencies
中添加SDK依賴。
dependencies {
implementation(name: 'alicloud-android-third-push-x.x.x', ext: 'aar')
implementation(name: 'alicloud-android-third-push-fcm-x.x.x', ext: 'aar')
implementation ('com.google.firebase:firebase-messaging:x.x.x')
}
第二步:配置使用SDK
1 SDK初始化
接入前手機必須安裝Google Paly Services,否則注冊不成功,大部分中國內(nèi)地Android手機的谷歌服務(wù)已被剝離。
SDK初始化務(wù)必在Application中執(zhí)行且放在推送SDK初始化代碼之后,否則可能導(dǎo)致輔助通道注冊失敗。
移動推送SDK版本為3.7.7之前的用戶,在升級過程中,需更新代碼中的sendId、applicationId、projectId、apiKey參數(shù),參數(shù)獲取方式請參見:GCM/FCM場景說明。
通過如下方式進行初始化:
//GCM/FCM輔助通道注冊
//sendId/applicationId/projectId/apiKey 請查看準(zhǔn)備工作中的信息
GcmRegister.register(applicationContext, sendId, applicationId, projectId, apiKey);
//GCM/FCM輔助通道注冊
//sendId/applicationId/projectId/apiKey 請查看準(zhǔn)備工作中的信息
GcmRegister.register(applicationContext, sendId, applicationId, projectId, apiKey);
注冊方法不會自動判斷是否支持Google系統(tǒng)推送,需自行判斷;或者在其他廠商通道初始化都返回false的情況下再執(zhí)行。
2 混淆配置
如果集成推送SDK的工程開啟了代碼混淆,需要添加以下輔助通道的Proguard配置。
# GCM/FCM通道
-keep class com.google.firebase.**{*;}
-dontwarn com.google.firebase.**
第三步:接入驗證
1 打開SDK日志
val pushService = PushServiceFactory.getCloudPushService()
//僅適用于Debug包,正式包不需要此行
pushService.setLogLevel(CloudPushService.LOG_DEBUG)
CloudPushService pushService = PushServiceFactory.getCloudPushService();
//僅適用于Debug包,正式包不需要此行
pushService.setLogLevel(CloudPushService.LOG_DEBUG);
2 確認(rèn)成功方法
GCM/FCM通道初始化成功,可以看到以下日志:
05-19 19:18:44.530 19153-19177/com.xxx D/MPS:GcmRegister: fcm token is eWIXLYCNP0Q:APA91bFUAgxj6XYf5okyoCBnRPw1UwITndzXrvPDgbdI2N44PYm17hFEBiNXNQJrJ8bOG_xjw3c3UPDAhzNMTLNjlAKcjUanKyLA6E3k4wEmgZuhgUT02UMmMvH2LVA1L2Z4-l-cT_Ug
收到GCM/FCM通道下發(fā)的消息:
05-19 19:20:04.900 19153-20391/com.alibaba.push2 D/MPS:GcmRegister: onReceiveMessage payload msg:[......]
后續(xù)步驟
您已經(jīng)可以通過EMAS后臺將推送通知通過輔助通道推送到手機通知欄,但是要處理點擊通知后的邏輯,只能通過輔助彈窗來接收推送數(shù)據(jù),詳情請參見輔助彈窗接入。
使用移動推送進行廠商通道推送時(使用移動推送控制臺或者OpenAPI進行推送時),服務(wù)端請必須參考輔助彈窗文檔進行服務(wù)端配置,服務(wù)端參數(shù)不設(shè)置,不會給廠商通道進行推送。
GCM/FCM場景說明
使用原生Android系統(tǒng)
常規(guī)使用時,應(yīng)用前臺運行,或者多任務(wù)管理中關(guān)閉應(yīng)用(殺進程),或者應(yīng)用后臺運行,都可以使用GCM/FCM通道推送到。
在設(shè)置的應(yīng)用管理中強制關(guān)閉應(yīng)用,應(yīng)用將無法自啟動,所以此時推送無法收到,可以看到如下日志提示,意思是強制關(guān)閉的應(yīng)用不能喚起。
GCM: broadcast intent callback: result=CANCELLED forIntent { act=com.google.android.c2dm.intent.RECEIVE flg=0x10000000 pkg=com.aliyun.emas.pocdemo (has extras) }
開啟電池性能優(yōu)化時,可以設(shè)置是否允許應(yīng)用后臺運行:允許后臺運行時,推送通道不受影響,應(yīng)用是否殺進程都可以收到推送。不允許后臺運行時,殺進程操作,系統(tǒng)會當(dāng)成強制關(guān)閉應(yīng)用來處理應(yīng)用的運行狀態(tài),此時可能無法收到推送。
使用設(shè)備廠商的Android系統(tǒng)
中國內(nèi)地部分廠商定制了Android系統(tǒng),在這些系統(tǒng)中會把殺進程操作,當(dāng)成強制關(guān)閉應(yīng)用來處理,最終會導(dǎo)致GCM/FCM通道無法送達。此時建議接入對應(yīng)廠商通道來提高應(yīng)用殺進程后的推送到達率,比如華為、小米等。
輔助通道常見問題
Android端阿里云移動推送與其他注冊廠商如何同時獲取regId