極光推送

今天來說一下極光推送的故事,極光推送是一個(gè)獨(dú)立的第三方云推送平臺(tái)。大家可以看一下極光推送官網(wǎng)的SDK文檔,比我寫的詳細(xì)得多!

簡(jiǎn)單使用##

  • 1、在這之前必須要注冊(cè)一個(gè)極光推送的賬號(hào),否則一切都是白談
  • 2、創(chuàng)建一個(gè)應(yīng)用,可以是android、ios、wp,這里我注冊(cè)的是android應(yīng)用,需要注意的是應(yīng)用包名,請(qǐng)讓包名和你的開發(fā)項(xiàng)目的包名相同,此時(shí)就會(huì)生成AppKey
  • 3.1、此時(shí)就可以點(diǎn)擊“下載 Android Example”下載一個(gè)例子源碼,在開發(fā)平臺(tái)(Eclipse)導(dǎo)入此應(yīng)用,在手機(jī)上運(yùn)行,然后在極光的后臺(tái)推送消息,此時(shí)就可以收到推送消息
  • 3.2、如果不需要Example源碼,完全可以自己一步一步創(chuàng)建工程,進(jìn)行編寫

編寫代碼##

  • 1、下載極光推送的Android SDK文檔
  • 2、導(dǎo)入 SDK 開發(fā)包到你自己的應(yīng)用程序項(xiàng)目
    • 復(fù)制 libs/jpush-sdk-release1.x.y.jar 到工程 libs/ 目錄下
    • 復(fù)制 libs/armeabi/libjpush1xy.so 到工程 libs/armeabi 目錄下
    • 復(fù)制 libs/armeabi-v7a/libjpush.so 到工程 libs/armeabi-v7a 目錄下
  • 3、配置 AndroidManifest.xml
    • 復(fù)制備注為 "Required" 的部分
    • 將備注為替換包名的部分,替換為當(dāng)前應(yīng)用程序的包名
    • 將AppKey替換為在Portal上注冊(cè)該應(yīng)用的的Key,例如(9fed5bcb7b9b87413678c407)
  • 4、添加代碼
    • 以下代碼定制一個(gè)本應(yīng)用程序 Application 類。需要在 AndoridManifest.xml 里配置。請(qǐng)參考上面 AndroidManifest.xml 片斷,或者 example 項(xiàng)目。
      public class ExampleApplication extends Application {
      @Override
      public void onCreate() {
      super.onCreate();
      JPushInterface.setDebugMode(true);
      JPushInterface.init(this);
      }
      }
  • 5 、現(xiàn)在就可以將極光推送Demo作為Android Studio的Module運(yùn)行在真機(jī)或虛擬機(jī)上,并調(diào)試了

高級(jí)功能##

  • 1、在我們接收到極光推送給我們的消息,我們是可以進(jìn)行處理的,但是在這之前我們必須要在 AndroidManifest.xml 里添加如下的配置信息。

     <receiver  
       android:name="Your Receiver"
       android:enabled="true">
       <intent-filter>
         <action android:name="cn.jpush.android.intent.REGISTRATION" />
         <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />
         <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />
         <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />
         <category android:name="You package Name" />
       </intent-filter>
     </receiver>
    
  • 2、創(chuàng)建你的廣播接收者,重寫onReceive方法
    @Override
    public void onReceive(Context context, Intent intent) {
    Bundle bundle = intent.getExtras();
    Log.d(TAG, "onReceive - " + intent.getAction());

      if (JPushInterface.ACTION_REGISTRATION_ID.equals(intent.getAction())) {
      } else if (JPushInterface.ACTION_MESSAGE_RECEIVED.equals(intent
              .getAction())) {
          System.out.println("收到了自定義消息。消息內(nèi)容是:"
                  + bundle.getString(JPushInterface.EXTRA_MESSAGE));
          // 自定義消息不會(huì)展示在通知欄,完全要開發(fā)者寫代碼去處理
      } else if (JPushInterface.ACTION_NOTIFICATION_RECEIVED.equals(intent
              .getAction())) {
          System.out.println("收到了通知");
          // 在這里可以做些統(tǒng)計(jì),或者做些其他工作
      } else if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent
              .getAction())) {
          System.out.println("用戶點(diǎn)擊打開了通知");
          // 在這里可以自己寫代碼去定義用戶點(diǎn)擊后的行為
          String extra = bundle.getString(JPushInterface.EXTRA_EXTRA);
          try {
              JSONObject jo = new JSONObject(extra);
              String url = jo.getString("url");
              // 打開瀏覽器
              Uri uri = Uri.parse(url);
              Intent i = new Intent(Intent.ACTION_VIEW, uri);
              i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
              context.startActivity(i);
          } catch (JSONException e) {
              e.printStackTrace();
          }
      }
    }
    

擴(kuò)展知識(shí)##

  • 場(chǎng)景一、其實(shí)極光推送不僅僅只是推送通知而已,也可以通知自定義消息,比如說Json消息,如果有一個(gè)ListView需要更新數(shù)據(jù),我們甚至不需要進(jìn)行下拉刷新,假設(shè)我們要從服務(wù)器加載一條新聞數(shù)據(jù),當(dāng)后臺(tái)管理員添加新聞數(shù)據(jù)的時(shí)候,服務(wù)器端就返回一條Json信息給客戶端,然后我就就可以獲取到新聞數(shù)據(jù),把數(shù)據(jù)直接添加到ListVIew中即可。
  • 場(chǎng)景二:聊天軟件的實(shí)現(xiàn)。假設(shè)張三要通過我們的軟件和某妹子進(jìn)行聊天,那么就可以采用極光推送,當(dāng)張三發(fā)送“約嗎?”消息后,我們其實(shí)可以把消息通過某接口(服務(wù)器端人員寫的)發(fā)送到我們的自己的服務(wù)器上,然后我們的服務(wù)器要做的事情是找到到推送給那個(gè)人,然后在調(diào)用極光推送的接口推送消息給妹子。反過來也是一樣,妹子發(fā)送消息“傻逼,滾”消息時(shí),也是把消息發(fā)送到我們的服務(wù)器,我們的服務(wù)器找到推送的目標(biāo)是“張三”,然后我們的服務(wù)器調(diào)用接口,讓極光的服務(wù)器推送消息給張三。

碼字碼的真累,還是敲代碼有意思##

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容