安卓端華爲推送集成筆記

華爲推送集成筆記

華爲推送
示例代碼
https://developer.huawei.com/consumer/cn/doc/development/HMS-Examples/push-android-sample
HUAWEI HMS Core
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-change
開發工具
https://developer.huawei.com/consumer/cn/doc/development/Tools-Guides/30935655
反饋與求助
https://developer.huawei.com/consumer/cn/doc/development/Tools-Guides/19866081
https://developer.huawei.com/consumer/cn/doc/development/Tools-Guides/07003360

keytool -list -v -keystore

證書指紋:
MD5: 86:E9:51:B4:25:05:FD:C6:C9:EC:13:5E:E7:7F:BF:20
SHA1: DC:4B:8F:2A:3F:C9:79:CC:02:04:65:B2:36:3D:C6:85:1C:E0:AF:22
SHA256: F6:92:67:B4:6E:E9:72:27:89:94:1B:39:73:7B:84:D6:EE:D7:52:EB:C3:B5:29:82:2F:F7:8C:9C:D9:7F:0F:3F
簽名算法名稱: SHA256withRSA
F6:92:67:B4:6E:E9:72:27:89:94:1B:39:73:7B:84:D6:EE:D7:52:EB:C3:B5:29:82:2F:F7:8C:9C:D9:7F:0F:3F

應用詳情
https://developer.huawei.com/consumer/cn/service/josp/agc/index.html#/myProject/101704409/97458334310914890

推送服務
https://developer.huawei.com/consumer/cn/hms/huawei-pushkit
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-introduction

推送服務說明
HUAWEI HMS Core集成準備
https://developer.huawei.com/consumer/cn/codelab/HMSPushKit/index.html#0

錯誤碼
https://developer.huawei.com/consumer/cn/doc/development/HMS-References/hms-error-code
安卓推送api
https://developer.huawei.com/consumer/cn/doc/development/HMS-References/push-HmsMessageService-cls#onMessageReceived

建議的最佳使用實踐

1、應用不要固定判斷Push Token長度,因爲後續長度可變。

2、應用的Push Token要定期更新(建議應用每次啓動的時候都獲取Token,如果發現和上次取到的不同,則上報到自己的服務器)。

3、請勿用Token跟蹤標記用戶。

可以調用HmsInstanceId.deleteToken接

但是建議開發者不要依賴deleteToken接口,如果開發者要實現不接收Push消息,可以自行將開發者應用服務器端的Token狀態設置爲失效狀態,並且在推送消息時判斷Token失效就不進行推送,避免頻繁的向服務器申請token。

注意:
HMS Core(APK)的版本不低於3.0.0。

通知欄支持
1、華爲設備上該功能支持的EMUI版本不低於EMUI 5.1。

2.5 點擊通知消息
2、通過通知消息傳遞數據給應用需要推送服務App版本爲10.0.0及以上。

2.5 點擊通知消息
關於通知消息,開發者可以自定義點擊消息的動作,包括:打開App首頁、打開特定URL、打開自定義富媒體消息、打開自定義App頁面。其中打開App首頁與自定義App頁面需要開發者端雲協同開發來完成,下面我們講下如何實現這兩種動作並從服務端接收數據。

注意:

1、點擊動作觸發打開應用首頁或者自定義App頁面,都是通過跨應用啓動Activity的方式來實現,需要保證要拉起的目標Activity的exported屬性爲true,即目標Activity要對外界公開,並且無權限保護,這樣才能啓動成功。

2、通過通知消息傳遞數據給應用需要推送服務App版本爲10.0.0及以上。

華爲商城v9.2.0.303 2019年05月31日
https://www.wandoujia.com/apps/785835/history_v90200303

2.5.1 打開自定義App頁面
1、intent參數生成
2、App服務端消息體中指定intent值
3、客戶端AndroidManifest.xml文件註冊待啓動的Activity類
4、在自定義Activity類中接收數據

具體實現參考打開App首頁中的接收數據示例代碼。

注意:
1、支持action參數需要EMUI 10.0.0以上,推送服務App版本爲10.1.0及以上。

2、Push SDK 4.0版本支持將action參數與intent參數通過SDK提供的RemoteMessage.Notification.getClickAction()、RemoteMessage.Notification.getIntentUri()方法直接透傳給應用,由應用自己處理。

2.5.2 打開App首頁
通過如下3步實現打開App首頁並攜帶數據給App。

其他資料

華爲推送服務開放能力合集,提供了獲取應用的設備匿名標識(AAID)以及接入華爲推送服務所需的令牌(Token)的公開類和方法。
AAID (Application Anonymous Device Identifier):應用匿名設備標識符,標識運行在移動智能終端設備上的應用實例,只有該應用實例才能訪問該標識符,它只存在於應用的安裝期。與無法重置的設備級硬件ID相比,AAID具有更好的隱私權屬性。
AAID具有以下特性:
1、匿名化、無隱私風險:AAID和已有的任何標識符都不關聯,並且每個應用只能訪問自己的AAID;
2、同一個設備上,同一個開發者的多個應用,AAID取值不同;
3、同一個設備上,不同開發者的應用,AAID取值不同;
4、不同設備上,同一個開發者的應用,AAID取值不同;
5、不同設備上,不同開發者的應用,AAID取值不同;
AAID會在包括但不限於下述場景中發生變化:
1、APP卸載重裝;
2、APP調用刪除AAID接口;
3、用戶恢復出廠設置;
4、用戶清除應用數據;

受限說明
https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-restrictions

token
ALumdhlVZYi4fafEDahqLWbEpgY4oNclM7WhkYEeeNpDnXICVcMg-AONUeUDOv7B4NeKLx-67wmgTy2Mt8JSv7BT3xmxhDHcWDgafoyNHRh5gy7s3dEyu0AD2Sa0fdhxyQ

透傳
需要app處於活動狀態,信息展示由開發者處理
通知
由sdk展示通知欄消息,app可以離線,
透傳消息是指當小米推送服務客戶端SDK接收到消息之後,直接把消息通過回調方法發送給應用,不做任何處理;

通知欄消息是指在設備接收到消息之後,首先由小米推送服務SDK彈出標準安卓通知欄通知,在用戶點擊通知欄之後,激活應用。
https://blog.csdn.net/zhiyi2010/article/details/50845456

通知消息:按規定的通知格式發送消息,不需應用處理通知顯示;透傳消息:自定義通知格式,消息內容會傳遞給應用,由應用處理通知顯示

通過鍵值對 透傳消息可以收到回調

2020-05-21 15:37:32.245 25576-25576/com.chinamobile.cmss.pa I/PushDemoLog: onMessageReceived is called
2020-05-21 15:37:32.245 25576-25576/com.chinamobile.cmss.pa I/PushDemoLog: getCollapseKey: null
getData: {“must”:“123”}
getFrom: 101704409
getTo: null
getMessageId: 6093046
getOriginalUrgency: 2
getUrgency: 2
getSendTime: 0
getMessageType: null
getTtl: 2147483647
2020-05-21 15:37:32.247 25576-25576/com.chinamobile.cmss.pa I/PushDemoLog: getImageUrl: null
getTitle: null
getTitleLocalizationKey: null
getTitleLocalizationArgs: null
getBody: null
getBodyLocalizationKey: null
getBodyLocalizationArgs: null
getIcon: null
getSound: null
getTag: null
getColor: null
getClickAction: null
getChannelId:

通知欄消息

  1. 選擇打開應用時,需設置App頁面、自定義鍵值對(非必填)。

a. 設置App頁面,包括首頁、自定義action頁面和自定義intentUri頁面。
b. 設置自定義鍵值對,由客戶端App自己解析處理。

2.2 安卓透傳消息
設置消息內容
透傳消息內容可以通過兩種方式來設置,鍵值對和自定義參數。

  1. 鍵值對,如下圖示,可以添加多組鍵值對。
  2. 自定義參數,可以是普通的字符串也可以是Json對象形式的字符串,最大長度1024。

問題通知類消息,沒有收到廣播
透傳消息,能收到廣播,但沒有通知

華爲推送集成注意事項

https://developer.huawei.com/consumer/cn/doc/development/HMS-Guides/push-basic-capability#h3-1575619839601
0 註銷Push Token

低於EMUI10.0的華爲設備上,getToken接口如果返回爲空,確保Push服務開通的情況下,結果後續以onNewToken接口返回。

服務端識別token過期後刷新token,以onNewToken接口返回。
集成HMS SDK最新版本需要滿足HMS Core(APK)的版本不低於3.0.0
Token發生變化時或者EMUI版本低於10.0以 onNewToken 方法返回

1 顯示/關閉通知欄消息 調用HmsMessaging.turnOnPush或者HmsMessaging.turnOffPush接口
HmsMessaging.getInstance(context).turnOnPush().addOnCompleteListener(new OnCompleteListener() {
@Override
public void onComplete(Task task) {
if (task.isSuccessful()) {
Log.i(TAG, “turnOnPush Complete”);
} else {
Log.e(TAG, “turnOnPush failed: ret=” + task.getException().getMessage());
}
}
});

2 點擊通知消息
需要保證要拉起的目標Activity的exported屬性爲true,即目標Activity要對外界公開,並且無權限保護,這樣才能啓動成功。
App版本爲10.0.0及以上。
打開自定義App頁面

實現方式
1intent參數生成
{
“message”: {
“data”: “{‘score’:‘7’,‘time’: ‘16:42’}”,
“notification”: {
“title”: “message title”,
“body”: “message body”
},
“android”: {
“data”:"{‘androidData’:‘7’,‘time’:‘16:42’}",
“notification”: {
“click_action”: {
“type”: 1,
“intent”: “intent://com.huawei.codelabpush/deeplink?#Intent;scheme=pushscheme;launchFlags=0x4000000;i.age=180;S.name=abc;end”
}
}
},
“token”: [
“pushtoken1”
]
}
}

2 指定action參數
支持action參數需要EMUI 10.0.0以上,推送服務App版本爲10.1.0及以上。
服務器
{
“message”: {
“data”: “{‘score’: ‘7’,‘time’: ‘16:42’}”,
“notification”: {
“title”: “message title”,
“body”: “message body”
},
“android”: {
“data”: “{‘androidData’: ‘7’,‘time’: ‘16:42’}”,
“notification”: {
“click_action”: {
“type”: 1,
“action”: “com.huawei.codelabpush.intent.action.test”
}
}
},
“token”: [
“pushtoken1”
]
}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章