2019-04-19

推送:友盟 U-Push

前言

最近一直在做百度人脸识别开发,心累啊。主要遇到的难点有:

  1. 安卓设备USB接口摄像头的调用(开源项目 UVCCamera)
  2. 人脸信息的采集(Camera 拍照)
  3. 人脸库搜索与人脸信息对比(调用百度相关接口)
这篇文章讲的是如何使用友盟的 U-Push SDK 来实现一个简单的安卓设备的推送功能,话不多说,马上开始我的表演吧,嘻嘻~~。

零、流程简述

实现步骤

一、准备工作

  • 一个现成的 Demo (主要起对照作用,可以二次检查代码)
  • 申请一个 Appkey,具体步骤可见友盟官方的 快速集成文档
    • 其中要注意输入正确的 包名,即 AndroidManifest.xml 文件中的 package 或者 build.gradle 文件中的 applicationId
  • 然后在申请好的应用中可以查看到以下3个东东
  1. Appkey(友盟后台用来识别 App 的唯一标识符
  2. Umeng Message Secret(客户端消息推送的密钥
  3. App Master Secret(服务器密钥,用于服务器端调用友盟API请求)
  • 上面的3个参数主要用到的是前2个,App Master Secret 是为第三方服务器请求接口准备的,暂时用不到,到这里准备工作就做好了,开始打码,吼吼!!!

二、码一码

1. 首先,在 build.gradle 文件中添加最新版本 PushSDK 的依赖
// PushSDK依赖的基础组件库
implementation 'com.umeng.sdk:common:1.5.3'
// utdid库(我也不是知道是啥东东)
implementation 'com.umeng.sdk:utdid:1.1.5.3'
// PushSDK(正主无疑)
implementation 'com.umeng.sdk:push:4.2.0'
2. 接下来就可以愉快的调用接口了(我对打码有种莫名的狂热??)
  • 在 App 工程的自定义 Appplication 类的 onCreate() 方法中初始化 FaceSDK
public class MyApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        /** 
          * 参数1:当前上下文 context
          * 参数2:应用申请的 Appkey
          * 参数3:渠道名称(自定义)
          * 参数4:设备类型(这个默认传手机就行了,除非你做的是小米盒子之类的开发)
          * 参数5:应用申请的 Umeng Message Scret
          */
        UMConfigure.init(this, Appkey, "Umeng", UMConfigure.DEVICE_TYPE_PHONE, Secret);
        // 获取消息推送的代理
        PushAgent mPushAgent = PushAgent.getInstance(this);
        // 注册推送服务,每次调用 register 方法都将回调该接口
        mPushAgent.register(new IUmengRegisterCallback() {
            @Override
            public void onSuccess(String deviceToken) {
                //注册成功会返回deviceToken deviceToken是推送消息的唯一标志
                Log.i(TAG,"注册成功:deviceToken:-------->  " + deviceToken);
            }
            @Override
            public void onFailure(String s, String s1) {
                Log.e(TAG,"注册失败:-------->  " + "s:" + s + ",s1:" + s1);
            }
            
        });
    }
}
3. ooo 还有个东东要注意一下
PushAgent.getInstance(context).onAppStart();
  • 它可以加在所有的 Activity 的 onCreate 方法中
  • 或者,加在应用的 BaseActivity (自定义Activity的父类) 的 onCreate 方法中

Activity 少的话就一个一个的加吧,多的话还是选第二个吧,一堆 Activiy 的话得加到头都秃了~~

4. 开启测试模式
  • 添加测试设备!(在友盟平台找到对应的应用,输入之前获取的 deviceToken,新建一个测试设备)
  • 在测试消息中进行如下操作
image
  • 最后就能在测试手机上看到刚才的推送消息啦,开心!
image

三、坑一坑

我得来着重讲一下这个 deviceToken,这个东东极其的坑(说多了都是泪)。

先用 官方语言 解释一哈这个东东:

deviceToken 是【友盟+】消息推送生成的用于标识设备的 id,长度为44位,不能定制和修改。同一台设备上不同应用对应的deviceToken 不一样。获取 deviceToken 的值后,可进行消息推送测试!

然后,到我爬坑了
  • 首先,一台设备的一个应用有且仅有一个 deviceToken(废话)
  • 但是应用被卸载再在同一台设备上安装的话,这个 deviceToken 是会更新的(旧的 deviceToken 废弃掉了,被新的覆盖,且无法再作为测试设备对应的标识 id 所使用,难受·难受)
此外 友盟 U-Push 的使用还有许多地方是可以自定义的,比如推送的界面,推送打开的后续动作,推送提醒的方式等等。
哇,厉害了我的哥!高级功能集成文档 值得瞅一瞅

关于友盟 U-Push 的初级应用就先记录到这里,更多的高级应用会在之后的md更新
码运昌隆

你可能感兴趣的:(2019-04-19)