最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android使用個推實現(xiàn)三方應(yīng)用的推送功能

 更新時間:2016年08月16日 08:39:52   作者:Darker  
這篇文章主要為大家詳細(xì)介紹了Android使用個推實現(xiàn)三方應(yīng)用的推送功能,感興趣的小伙伴們可以參考一下

PS:用了一下個推.感覺實現(xiàn)第三方應(yīng)用的推送功能還是比較簡單的.官方文檔寫的也非常的明確.

學(xué)習(xí)內(nèi)容:

1.使用個推實現(xiàn)第三方應(yīng)用的推送.

所有的配置我最后會給一個源代碼,內(nèi)部有相關(guān)的配置和文檔來幫助大家完成配置,在這里就不進(jìn)行介紹了.

感覺需要寫的東西不是非常的多,因為官方的文檔已經(jīng)寫的非常的明確了,如何進(jìn)行配置,導(dǎo)入jar包,.so文件,以及AndroidManifest的文件的相關(guān)配置都寫的非常的明確.我這里就稍微的簡單介紹一下.注冊賬號什么的我就不說了,這些基本的東西沒有減少的必要性.

i.PushManager

PushManager是實現(xiàn)推送的核心類,可以進(jìn)行推送控制,設(shè)置標(biāo)簽,設(shè)置別名,設(shè)置默認(rèn)時間等.所有的接口都由這個對象去調(diào)用.因此我們需要初始化PushManager對象.

復(fù)制代碼 代碼如下:
PushManager.getInstance().initialize(context);

對象的創(chuàng)建方式是單列的.因此拿到的對象也就具有唯一性.這里獲取到PushManager對象的同時去初始化個推服務(wù),接口調(diào)用之后個推服務(wù)后臺運(yùn)行,通過廣播的方式將CID發(fā)送給App.這里其實最重要的就是這個廣播,其他的東西都沒有什么重點的地方.只需要稍微的注意一下即可.

ii.GeTuiPushReceiver app接收CID的廣播

package com.example.totem.getuidemo.receiver;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;

import com.igexin.sdk.PushConsts;
import com.igexin.sdk.PushManager;

/**
 * Created by Totem on 2016/8/15.
 * @author 代碼丶如風(fēng)
 */
public class GeTuiPushReceiver extends BroadcastReceiver {

 public static String KEY_CLIENT_ID = "push_notification_client_id";

 public static String message;

 public static void init(Context context){

  /**
   * 初始化對象
   * 可以進(jìn)行推送控制,設(shè)置標(biāo)簽,設(shè)置別名,設(shè)置默認(rèn)時間等
   * 所有接口都由該對象調(diào)用
   * */
  PushManager.getInstance().initialize(context);
  /**
   * 獲取ClientId
   * */
  String clientId = PushManager.getInstance().getClientid(context);
  if(clientId != null){
   KEY_CLIENT_ID = clientId;
  }
 }


 @Override
 public void onReceive(Context context, Intent intent) {
  //相關(guān)處理
 }

 private static OnGetPushMessageListener onGetPushMessageListener;

 public static void setOnGetPushMessageListener(OnGetPushMessageListener onGetPushMessageListener) {
  GeTuiPushReceiver.onGetPushMessageListener = onGetPushMessageListener;
 }

 /**
  * 對外暴露接口
  * */

 public interface OnGetPushMessageListener{
  void getOstfMessage(String message);
 }

}

這個廣播是接收推送消息的核心類,其實實現(xiàn)起來也是比較簡單的,首先就是獲取PushManager對象,然后初始化個推服務(wù),在OnReceiver方法中對傳遞過來的數(shù)據(jù)進(jìn)行判斷,這里只對兩種狀態(tài)進(jìn)行了判斷,一種是推送通知,另一種則是透傳消息.

@Override
 public void onReceive(Context context, Intent intent) {
  Bundle bundle = intent.getExtras();
  switch (bundle.getInt(PushConsts.CMD_ACTION)){


   /**
    * 推送通知
    * */
   case PushConsts.GET_CLIENTID:
    String cid = bundle.getString("clientid");
    break;

   /**
    * 透傳消息,傳遞過來的是Json字符串.一般而言需要客戶端進(jìn)行解析.
    * */
   case PushConsts.GET_MSG_DATA:
    String appid = bundle.getString("appid");
    byte[] payload = bundle.getByteArray("payload");
    String taskid = bundle.getString("taskid");
    String messageid = bundle.getString("messageid");
    if(payload != null){
     /**
      * 如果拿到的數(shù)據(jù)不為空.那么做相關(guān)的處理
      * */
     message = new String(payload);
     onGetPushMessageListener.getOstfMessage(message);
    }else{
     message = "";
    }
    break;
  }
 }

這樣通過判斷,我們就可以得知,是推送通知,還是透傳消息等等.最后寫了一個對外界暴露的接口,其實就對Activity暴露接口,當(dāng)我們在廣播中接收到了數(shù)據(jù)發(fā)生了變化,或者是有數(shù)據(jù)傳遞過來,需要通過這個接口的方式,告知數(shù)據(jù)產(chǎn)生了變化,需要主進(jìn)程做相關(guān)的處理,這是暴露接口的目的.然后在主頁面中,我們只需要實現(xiàn)這個接口就可以了.

GeTuiPushReceiver.setOnGetPushMessageListener(new GeTuiPushReceiver.OnGetPushMessageListener() {
  @Override
  public void getOstfMessage(String message) {
   if(message!=null){
    MessageData.add(message);
   }
  }
 });

iii.打開推送

turnOnPush(context)方法,用于打開推送,如果我們不主動打開推送的話,就算是后臺發(fā)送了推送消息,我們也是接收不到的.在默認(rèn)的狀態(tài)下是開啟狀態(tài).

復(fù)制代碼 代碼如下:
GeTuiPushReceiver.init(getApplicationContext());pushManager = PushManager.getInstance();pushManager.turnOnPush(this);

iv.關(guān)閉推送服務(wù)

turnOffPush(context)方法,用于關(guān)閉推送服務(wù).這個方法執(zhí)行之后,就無法收到推送服務(wù)了,需要注意的是,想要再次接收到推送,必須使用turnOnPush(context)方法.其他方法無效.

復(fù)制代碼 代碼如下:
GeTuiPushReceiver.init(getApplicationContext());pushManager = PushManager.getInstance();pushManager.turnOffPush(this);

v.停止SDK服務(wù).

stopService(context).停止SDK服務(wù)之后,服務(wù)不會終止運(yùn)行,而是終止推送和聯(lián)網(wǎng)功能.重新啟動需要調(diào)用initalize()方法或者是turnOnPush()方法.

復(fù)制代碼 代碼如下:
GeTuiPushReceiver.init(getApplicationContext());pushManager = PushManager.getInstance();pushManager.stopService(this);

基本的東西都介紹完了,還有一些設(shè)置標(biāo)簽,靜默時間,綁定別名什么的,大家如果有興趣可以自己去研究下,反正我是暫時沒有使用到.因此就先不動這幾個模塊了.我們就來看看如何使用個推后臺來實現(xiàn)推送吧.

首先我們需要創(chuàng)建自己的應(yīng)用,然后我們可以在應(yīng)用配置當(dāng)中獲取到我們想要的數(shù)據(jù),具體效果如下.

這里有我們想要的數(shù)據(jù),AppId,AppKey等等,這些東西都需要在AndroidManifest文件中進(jìn)行配置.自己做好Demo之后,就可以通過后臺發(fā)送推送了.

標(biāo)題和內(nèi)容都是必填項,然后一直確定就可以了,這樣消息就被推送出去了.在App上打開推送服務(wù),就可以接收到推送了.透傳消息我就不進(jìn)行截圖了.需要注意的一點就是透傳消息是Json格式的字串.個推為我們提供好了Json的格式化工具.

最后放上一個源代碼,這個源代碼是無法運(yùn)行的,因為這里是使用我自己的后臺,大家也需要去創(chuàng)建賬號,用自己的后臺去創(chuàng)建應(yīng)用,然后把AndroidManifest文件中的AppId,AppKey,AppSecret進(jìn)行修改.并且內(nèi)部提供了很多文檔,幫助大家去集成,點擊下載

相關(guān)文章

  • Android?拍照功能實現(xiàn)(手機(jī)關(guān)閉依然拍照)詳解及實例代碼

    Android?拍照功能實現(xiàn)(手機(jī)關(guān)閉依然拍照)詳解及實例代碼

    這篇文章主要介紹了?Android?拍照功能實現(xiàn)(手機(jī)關(guān)閉依然拍照)詳解及實例代碼的相關(guān)資料,這對Android相機(jī)在不開手機(jī)的情況下還能繼續(xù)拍照,附有實例Demo,需要的朋友可以參考下
    2016-12-12
  • Android UI組件AppWidget控件入門詳解

    Android UI組件AppWidget控件入門詳解

    這篇文章主要介紹了Android UI組件AppWidget控件入門,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-09-09
  • Android Retrofit的使用詳解

    Android Retrofit的使用詳解

    本文介紹了Android Retrofit的使用詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • Android實現(xiàn)美團(tuán)下拉功能

    Android實現(xiàn)美團(tuán)下拉功能

    這篇文章主要為大家詳細(xì)介紹了Android實現(xiàn)美團(tuán)下拉功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-10-10
  • Android 繞過反射黑名單的方法

    Android 繞過反射黑名單的方法

    這篇文章主要介紹了Android 繞過反射黑名單的方法,幫助大家更好的理解和使用Android,感興趣的朋友可以了解下
    2021-02-02
  • Android SDK Manager更新、下載速度慢問題解決辦法

    Android SDK Manager更新、下載速度慢問題解決辦法

    這篇文章主要介紹了Android SDK Manager更新、下載速度慢問題解決辦法的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • Cocos2d-x入門教程(詳細(xì)的實例和講解)

    Cocos2d-x入門教程(詳細(xì)的實例和講解)

    這篇文章主要介紹了Cocos2d-x入門教程,包括詳細(xì)的實例、講解以及實現(xiàn)過程,需要的朋友可以參考下
    2014-04-04
  • Flutter生命周期超詳細(xì)講解

    Flutter生命周期超詳細(xì)講解

    和其他的視圖框架比如android的Activity一樣,flutter中的視圖Widget也存在生命周期,生命周期的回調(diào)函數(shù)提現(xiàn)在了State上面。理解flutter的生命周期,對我們寫出一個合理的控件至關(guān)重要
    2023-04-04
  • Android網(wǎng)絡(luò)判斷知識小結(jié)

    Android網(wǎng)絡(luò)判斷知識小結(jié)

    本文通過兩段實例代碼分別給大家介紹Android中判斷當(dāng)前網(wǎng)絡(luò)是否可用和Android 關(guān)于判斷應(yīng)用是否有網(wǎng)絡(luò)的相關(guān)知識,對android網(wǎng)絡(luò)判斷相關(guān)知識感興趣的朋友一起學(xué)習(xí)吧
    2015-12-12
  • Flutter實現(xiàn)底部和頂部導(dǎo)航欄

    Flutter實現(xiàn)底部和頂部導(dǎo)航欄

    這篇文章主要為大家詳細(xì)介紹了Flutter實現(xiàn)底部和頂部導(dǎo)航欄,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07

最新評論

开封县| 桓台县| 钦州市| 南投县| 东明县| 体育| 富锦市| 太白县| 安义县| 武义县| 绥棱县| 遂溪县| 荣昌县| 横山县| 洱源县| 和政县| 吴旗县| 安岳县| 昌平区| 曲沃县| 都安| 贡觉县| 湘西| 科尔| 会宁县| 囊谦县| 宜章县| 荥阳市| 南宫市| 贵阳市| 七台河市| 邯郸县| 盐池县| 株洲市| 勃利县| 晋宁县| 诸暨市| 神木县| 弋阳县| 万荣县| 武胜县|