1. 程式人生 > >android進階4step3:Android常用框架——友盟推送簡單使用(官翻)

android進階4step3:Android常用框架——友盟推送簡單使用(官翻)

友盟官方:快速整合文件

還有之前寫的極光推送的簡單使用:Android常用框架——極光推送的簡單使用

使用步驟:

第一步:.登入註冊友盟的賬號,並繫結郵箱   官網

第二步:以下拷貝自友盟官方文件

前言

【友盟+】訊息推送SDK 5.0.2 整合文件。

此文件適用於Android Studio線上整合,如您需要離線下載SDK方式整合,請參考手動整合文件-Android Studio

開發環境

IDE:Android Studio

本文件提供的UmengPushDemo工程是Android Studio基於Maven的快速整合方案。該方案配置簡單,方便後續維護和更新。因此強烈推薦開發者根據本文件使用Android Studio進行整合工作。

示例工程下載地址:

https://download.umeng.com/online/2018/12/20181219173244199.zip

訊息推送SDK快速整合

1-1

1、Appkey申請

請在U-Push官網為您的應用申請Appkey(詳細操作路徑:U-Push官網->應用->新建應用->建立新應用)1-2-1

注:已經使用了【友盟+】統計的使用者,請從U-Push官網從已有應用中新增關聯。

1-4

獲取應用對應的AppkeyUmeng Message Secret,這兩個值請務必留意,在後續SDK初始化中需要用到。1-5

2、接入Push SDK

在您的Android Studio工程的App模組的build.gradle配置指令碼中新增maven遠端依賴,匯入最新版本PushSDK:

請檢視您專案中com.android.tools.build:gradle配置,如果版本號<3.0.0,請使用如下配置指令碼新增遠端依賴:

//PushSDK必須依賴基礎元件庫,所以需要加入對應依賴
compile 'com.umeng.umsdk:common:1.5.4'
//PushSDK必須依賴utdid庫,所以需要加入對應依賴
compile 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
compile 'com.umeng.umsdk:push:5.0.2'

請檢視您專案中com.android.tools.build:gradle配置,如果版本號>=3.0.0,請使用如下配置指令碼新增遠端依賴:

//PushSDK必須依賴基礎元件庫,所以需要加入對應依賴
implementation 'com.umeng.umsdk:common:1.5.4'
//PushSDK必須依賴utdid庫,所以需要加入對應依賴
implementation 'com.umeng.umsdk:utdid:1.1.5.3'
//PushSDK
implementation 'com.umeng.umsdk:push:5.0.2'

在工程build.gradle配置指令碼中buildscript和allprojects段中新增【友盟+】sdk 新maven倉庫地址

buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://dl.bintray.com/umsdk/release' }
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}
allprojects {
    repositories {
        google()
        jcenter()
        mavenCentral()
        maven { url 'https://dl.bintray.com/umsdk/release' }
    }
}

3、基礎介面引入

1、務必在工程的自定義Application類的 onCreate() 方法中做SDK程式碼初始化工作。

// 在此處呼叫基礎元件包提供的初始化函式 相應資訊可在應用管理 -> 應用資訊 中找到 http://message.umeng.com/list/apps
// 引數一:當前上下文context;
// 引數二:應用申請的Appkey(需替換);
// 引數三:渠道名稱;
// 引數四:裝置型別,必須引數,傳引數為UMConfigure.DEVICE_TYPE_PHONE則表示手機;傳引數為UMConfigure.DEVICE_TYPE_BOX則表示盒子;預設為手機;
// 引數五:Push推送業務的secret 填充Umeng Message Secret對應資訊(需替換)
UMConfigure.init(this, "替換為Appkey,服務後臺位置:應用管理 -> 應用資訊 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替換為祕鑰資訊,服務後臺位置:應用管理 -> 應用資訊 -> Umeng Message Secret");

1-7

2、Push註冊在UMConfigure.init方法之後註冊,註冊成功後可獲取deviceToken,進行訊息下發。呼叫程式碼如下所示: 


UMConfigure.init(this, "替換為Appkey,服務後臺位置:應用管理 -> 應用資訊 -> Appkey", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "替換為祕鑰資訊,服務後臺位置:應用管理 -> 應用資訊 -> Umeng Message 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);
  }
});
  • deviceToken是【友盟+】訊息推送生成的用於標識裝置的id,長度為44位,不能定製和修改。同一臺裝置上不同應用對應的deviceToken不一樣。獲取deviceToken的值後,可進行訊息推送測試!

4、應用資料統計介面

在所有的Activity 的onCreate 方法或在應用的BaseActivity的onCreate方法中新增:

PushAgent.getInstance(context).onAppStart();

注:該方法是【友盟+】Push後臺進行日活統計及多維度推送的必呼叫方法,請務必呼叫!

5、訊息推送

恭喜您已經順利獲取deviceToken!我們馬上可以向這臺裝置推送訊息了~

可以直接傳送到安裝該app的真機或者模擬器:

首先執行app(app被殺死時收不到,只有開啟才能收到)

 訊息列表—>訊息通知—>新建通知—填寫內容—>設定(引數)—>點擊發送

效果: 

程式碼:

自定義的MyApplication類

public class MyApplication extends Application {

    private static final String TAG = "MyApplication";

    @Override
    public void onCreate() {
        super.onCreate();

        // 在此處呼叫基礎元件包提供的初始化函式 相應資訊可在應用管理 -> 應用資訊 中找到 http://message.umeng.com/list/apps
        // 引數一:當前上下文context;
        // 引數二:應用申請的Appkey(需替換);
        // 引數三:渠道名稱;
        // 引數四:裝置型別,必須引數,傳引數為UMConfigure.DEVICE_TYPE_PHONE則表示手機;傳引數為UMConfigure.DEVICE_TYPE_BOX則表示盒子;預設為手機;
        // 引數五:Push推送業務的secret 填充Umeng Message Secret對應資訊(需替換)
        UMConfigure.init(this, "5c1c9a0bb465f548e4000394", "Umeng", UMConfigure.DEVICE_TYPE_PHONE, "c9674cbe2cc4beda9cd4dc4256c7c892");

        //獲取訊息推送代理示例
        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);
            }
        });

        //拿到通知的訊息
        UmengMessageHandler messageHandler = new UmengMessageHandler() {
            @Override
            public Notification getNotification(Context context, UMessage uMessage) {
                //通知的標題
                String title = uMessage.title;
               //通知的內容
                String ticker = uMessage.ticker;
                Log.e(TAG, "getNotification:-------->  " + "title:" + title + ",ticker:" + ticker);

                return super.getNotification(context, uMessage);
            }
        };
        mPushAgent.setMessageHandler(messageHandler);

        //通知到達點選的行為
        UmengNotificationClickHandler notificationClickHandler = new UmengNotificationClickHandler() {
            //直接開啟app
            @Override
            public void launchApp(Context context, UMessage msg) {
                super.launchApp(context, msg);
                Log.e(TAG, "launchApp:-------->  " + "msg:" + msg);
            }
            
            //開啟指定的Url
            @Override
            public void openUrl(Context context, UMessage msg) {
                super.openUrl(context, msg);
                Log.e(TAG, "openUrl:-------->  " + "msg:" + msg);
            }
            //開啟指定的Activity
            @Override
            public void openActivity(Context context, UMessage msg) {
                super.openActivity(context, msg);
                Log.e(TAG, "openActivity:-------->  " + "msg:" + msg);
            }
            //開啟自定義的行為
            @Override
            public void dealWithCustomAction(Context context, UMessage msg) {
                Log.e(TAG, "dealWithCustomAction:-------->  " + "msg:" + msg.custom);
                Toast.makeText(context, msg.custom, Toast.LENGTH_LONG).show();
                //如果是點選通知欄的動作
                //點選後跳轉
                Intent intent1 = new Intent(context, MainActivity.class);
                intent1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                context.startActivity(intent1);

            }
        };
        mPushAgent.setNotificationClickHandler(notificationClickHandler);

    }
}

 注意要在配置檔案中,把這個MyApplication進行靜態註冊

   <application
       .... 
       //新增這一句程式碼
       android:name=".MyApplication"
       .....
      >
        <activity android:name=".MainActivity">
       ....
        </activity>
    </application>

也可以測試:

新增測試裝置:

在【友盟+】訊息推送服務Push後臺的“測試模式”中填寫獲取到的deviceToken,將該裝置新增為測試裝置:1-15-11-15-2

在測試訊息中新建訊息,詳細過程如下所示,詳細過程如下所示:1-14

6、接入完成

此時在您的測試手機上可以看到您剛才的推送訊息!

至此您已完整集成了【友盟+】訊息推送SDK,更多高階功能請見Push SDK高階功能