一、 创建项目
二、 添加应用
添加完应用会自动跳转到 “接入指南”
三、 集成到Android项目
集成HMS Core SDK
1 2 3
| dependencies { implementation 'com.huawei.hms:push:{version}' # 当前版本5.0.4.302 }
|
四、 SHA256指纹和OAuth推送所需要的参数
1
| $ keytool -list -v -keystore C:\TestApp.jks
|
五、服务端推送
【构建发送消息请求指南】
1. 您的服务器获取Access Token,详情请参见客户端模式。
1 2 3 4 5 6 7
| POST /oauth2/v3/token HTTP/1.1 Host: oauth-login.cloud.huawei.com Content-Type: application/x-www-form-urlencoded
grant_type=client_credentials& client_id=< APP ID >& client_secret=< APP SECRET >
|
响应
1 2 3 4 5
| { "access_token": "<返回的Access Token>", "expires_in": 3600, "token_type": "Bearer" }
|
2. 您的服务器调用API发送Push消息,详情请参见下行消息。
HTTPS POST URL:
1
| POST https://push-api.cloud.huawei.com/v1/[appId]/messages:send
|
请求消息头示例:
1
| Content-Type: application/json; charset=UTF-8Authorization: Bearer CF3Xl2XV6jMKZgqYSZFws9IPlgDvxqOfFSmrlmtkTRupbU2VklvhX9kC9JCnKVSDX2VrDgAPuzvNm3WccUIaDg==
|
说明
请求消息头中的Authorization参数生成请参见OAuth 2.0客户端模式,其中的客户端ID和客户端密钥请输入您在AppGallery Connect项目下的Android应用里的App ID和App Secret。
请求消息体示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| { "validate_only": false, "message": { "notification": { "title": "title", "body": "body" }, "android": { "notification": { "title": "android title", "body": "android body", "click_action": { "type": 1, "intent": "#Intent;compo=com.rvr/.Activity;S.W=U;end" } } }, "token": [ "pushtoken1", "pushtoken2" ] } }
|
说明
通知栏消息中,如果设置了message.android.notification.title和message.android.notification.body,则会分别覆盖message.notification.title和message.notification.body。
透传消息示例报文:
1 2 3 4 5 6 7 8 9 10
| { "validate_only": false, "message": { "data": "{'param1':'value1','param2':'value2'}", "token": [ "pushtoken1", "pushtoken2" ] } }
|
六、Android端接收透传消息
集成SDK后要在 AndroidManifest.xml
文件的application标签下注册您自己的service,继承HmsMessageService类并实现其中的方法,此处以DemoHmsMessageService类为例(类名由您自定义)。
该service用于接收透传消息、获取Token。
1 2 3 4 5 6 7
| <service android:name=".DemoHmsMessageService" android:exported="false"> <intent-filter> <action android:name="com.huawei.push.action.MESSAGING_EVENT"/> </intent-filter> </service>
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| import com.huawei.hms.push.HmsMessageService; import com.huawei.hms.push.RemoteMessage;
public class DemoHmsMessageService extends HmsMessageService {
private String TAG = getClass().getName();
@Override public void onNewToken(String newDeviceToken) { super.onNewToken(newDeviceToken);
}
@Override public void onMessageReceived(RemoteMessage remoteMessage) { super.onMessageReceived(remoteMessage); } @Override public void onDeletedMessages() { super.onDeletedMessages(); } }
|
App启动时注册推送,自动获取的 newToken
。
1
| HmsMessaging.getInstance(context).setAutoInitEnabled(true);
|
七、代码混淆
1 2 3 4 5 6 7 8 9
| -ignorewarnings -keepattributes *Annotation* -keepattributes Exceptions -keepattributes InnerClasses -keepattributes Signature -keepattributes SourceFile,LineNumberTable -keep class com.huawei.hianalytics.**{*;} -keep class com.huawei.updatesdk.**{*;} -keep class com.huawei.hms.**{*;}
|