华为推送集成

华为推送遇到的两个值得注意的点个

1、开发者通过在APP服务器端调用HUAWEI Push接口,向HUAWEI Push平台发送推送消息;
2、HUAWEI Push平台将消息发给安装了相应APP的终端设备。
在开发者联盟注册开发者帐号,并在开发者管理台上创建应用以及配置应用信息和开通HUAWEI Push服务;
使用Android Studio IDE创建Project,并配置接入HUAWEI Push依赖的SDK;
根据HUAWEI Push开发指南,实现华为Push开放服务的API调用以及调试。
您将建立什么
在这个Codelab中,你将使用已经创建好的Demo Project实现对华为Push开放服务的API调用,通过Demo Project你可以体验到:
向HUAWEI Push服务端申请Token;
接收HUAWEI Push服务端推送的测试消息。

1、集成华为依赖库的时候注意点

先 app gradle 添加

 implementation 'com.huawei.hms:push:4.0.0.300'

再 项目gradle 底部添加

第一点
repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'http://developer.huawei.com/repo/' }
    }

第二点
 dependencies {
       classpath 'com.huawei.agconnect:agcp:1.2.0.300'
    }

第三点
allprojects {
    repositories {
        google()
        jcenter()
        mavenLocal()
        mavenCentral()
        maven {
            url 'https://maven.google.com'
        }
        maven { url 'http://developer.huawei.com/repo/' }

    }
}

这三点一个不能少要不然会提示 依赖失败!!!!

2 配置获取token

QQ截图20200313104140.png

官网第六部 AndroidManifest.xml 配置 只提示说要自定义写一个集成它HmsMessageService的服务类,却没说还要在application节点下配置一个

 <meta-data
            android:name="com.huawei.hms.client.appid"
            android:value="my_appid" />

如果不配置获取不到token,官网也没提示,连demo里面也没看到,所以这个地方很容就被忽视。

获取token注意点:

1、建议在APP启动后首个activity的onCreate方法调用getToken方法。

调用getInstance方法获取HmsInstanceId类实例:

HmsInstanceId inst  = HmsInstanceId.getInstance(context);

2、调用getToken方法获取Token:

public void getToken() {
    new Thread() {
        @Override
        public void run() {
            try {
                String getToken =  HmsInstanceId.getInstance(context).getToken(appId, "HCM");
                if (!TextUtils.isEmpty(getToken)) {
                    //TODO: Send token to your app server.
                }
            } catch (Exception e) {
                Log.e(TAG, "getToken failed.", e);
            }
        }
    }.start();
}

3、Token发生变化时或者EMUI版本低于10.0onNewToken方法返回。

示例代码:

public class DemoHmsMessageService extends HmsMessageService {
    @Override
    public void onNewToken(String token) {
        Log.d(TAG, "Refreshed token: " + token);
        // send the token to your app server.
        if (!TextUtils.isEmpty(token)) {
            sendRegTokenToServer(token);
        }
    }
    private void sendRegTokenToServer(String token) {
        // TODO: Implement this method to send token to your app server.
    }
}

吐槽点

1、只有透传的消息前台接收消息的时候 才进入HmsMessageService这个服务类里面的onMessageReceived这个回调方法,发送通知只有EMUI 9.1.0以上和HMS SDK 4.0以上支持。

App如果订阅了主题消息或者服务器主动推送的透传消息(包括通知消息前台展示功能中设置通知消息由应用自己处理),都需要App通过实现 onMessageReceived回调方法来接收消息,收到消息的后续行为由应用自己处理。

    @Override
    public void onMessageReceived(RemoteMessage message) {
        Log.i(TAG, "onMessageReceived is called");
        if (message == null) {
            Log.e(TAG, "Received message entity is null!");
            return;
        }
        Log.i(TAG, "getCollapseKey: " + message.getCollapseKey()
                + "\n getData: " + message.getData()
                + "\n getFrom: " + message.getFrom()
                + "\n getTo: " + message.getTo()
                + "\n getMessageId: " + message.getMessageId()
                + "\n getOriginalUrgency: " + message.getOriginalUrgency()
                + "\n getUrgency: " + message.getUrgency()
                + "\n getSendTime: " + message.getSentTime()
                + "\n getMessageType: " + message.getMessageType()
                + "\n getTtl: " + message.getTtl());
        RemoteMessage.Notification notification = message.getNotification();
        if (notification != null) {
            Log.i(TAG, "\n getImageUrl: " + notification.getImageUrl()
                    + "\n getTitle: " + notification.getTitle()
                    + "\n getTitleLocalizationKey: " + notification.getTitleLocalizationKey()
                    + "\n getTitleLocalizationArgs: " + Arrays.toString(notification.getTitleLocalizationArgs())
                    + "\n getBody: " + notification.getBody()
                    + "\n getBodyLocalizationKey: " + notification.getBodyLocalizationKey()
                    + "\n getBodyLocalizationArgs: " + Arrays.toString(notification.getBodyLocalizationArgs())
                    + "\n getIcon: " + notification.getIcon()
                    + "\n getSound: " + notification.getSound()
                    + "\n getTag: " + notification.getTag()
                    + "\n getColor: " + notification.getColor()
                    + "\n getClickAction: " + notification.getClickAction()
                    + "\n getChannelId: " + notification.getChannelId()
                    + "\n getLink: " + notification.getLink()
                    + "\n getNotifyId: " + notification.getNotifyId());
        }
        Boolean judgeWhetherIn10s = false;
        // If the messages are not processed in 10 seconds, the app needs to use WorkManager for processing.
        if (judgeWhetherIn10s) {
            startWorkManagerJob(message);
        } else {
            // Process message within 10s
            processWithin10s(message);
        }
    }
    private void startWorkManagerJob(RemoteMessage message) {
        Log.d(TAG, "Start new job processing.");
    }
    private void processWithin10s(RemoteMessage message) {
        Log.d(TAG, "Processing now.");
    }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,802评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,109评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,683评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,458评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,452评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,505评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,901评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,550评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,763评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,556评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,629评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,330评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,898评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,897评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,140评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,807评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,339评论 2 342