android極光推送學習

來源:互聯網
上載者:User

標籤:

什麼是推送呢?

一種圖片讓你明白什麼是推送:

這就是推送:


就是伺服器可以即時的將訊息發送到用戶端

首先要理解一些幾個概念:

長串連和段串連:

.長串連是指用戶端和伺服器之間始終建立著一個通訊串連,在串連沒有中斷之前,用戶端和伺服器之間可以隨時進行通訊。

.短串連是指通訊雙方有資料互動是,就建立一個串連,資料發送完成後,則斷開此串連。


長串連實現的即時通訊叫:推送(也就是今天的主題)

短串連實現的即時通訊叫:輪詢。(用戶端每隔一段時間詢問伺服器是否有新訊息)


國內的第三方推送平台:

極光推送

個推

百度推送

小米推送

等等

今天來學習一下極光推送

首先在官網上註冊一個帳號:https://www.jiguang.cn/

建立一個應用,建立應用的包名 ,與你要整合極光推送的應用程式套件名一定要一致

參照開發文檔一步步來:http://docs.jiguang.cn/guideline/android_guide/#sdk

1.下載android sdk:http://docs.jiguang.cn/resources/

2.

SDK整合步驟匯入 SDK 開發包到你自己的應用程式項目
  • 解壓縮 jpush-android-release-2.x.y.zip 整合壓縮包。
  • 把 libs檔案夾下所有的檔案複製到你建立的工程lib下

      配置資訊清單檔:

      根據 SDK 壓縮包裡的 AndroidManifest.xml 範例檔案,來配置應用程式項目的 AndroidManifest.xml 。

       主要步驟為:

  • 複製備忘為 "Required" 的部分
  • 將備忘為替換包名的部分,替換為當前應用程式的包名
  • 將AppKey替換為在Portal上註冊該應用的的Key,例如(9fed5bcb7b9b87413678c407)

AndroidManifest 樣本

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="您應用的包名"    android:versionCode="216"    android:versionName="2.1.6"    >    <uses-sdk android:minSdkVersion="9" android:targetSdkVersion="23" />    <!-- Required -->    <permission android:name="您應用的包名.permission.JPUSH_MESSAGE" android:protectionLevel="signature" />    <!-- Required -->    <uses-permission android:name="您應用的包名.permission.JPUSH_MESSAGE" />    <uses-permission android:name="android.permission.RECEIVE_USER_PRESENT" />    <uses-permission android:name="android.permission.INTERNET" />    <uses-permission android:name="android.permission.WAKE_LOCK" />    <uses-permission android:name="android.permission.READ_PHONE_STATE" />    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />    <uses-permission android:name="android.permission.VIBRATE" />    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />    <uses-permission android:name="android.permission.WRITE_SETTINGS" />     <!-- Optional. Required for location feature -->    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />    <uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />    <uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />    <application        android:icon="@drawable/ic_launcher"        android:label="@string/app_name"        android:name="Your Application">        <!-- Required SDK 核心功能-->        <!-- option since 2.0.5 可配置PushService,DaemonService,PushReceiver,AlarmReceiver的android:process參數 將JPush相關組件設定為一個獨立進程 -->        <!-- 如:android:process=":remote" -->        <service            android:name="cn.jpush.android.service.PushService"            android:enabled="true"            android:exported="false" >            <intent-filter>                <action android:name="cn.jpush.android.intent.REGISTER" />                <action android:name="cn.jpush.android.intent.REPORT" />                <action android:name="cn.jpush.android.intent.PushService" />                <action android:name="cn.jpush.android.intent.PUSH_TIME" />            </intent-filter>        </service>        <!-- since 1.8.0 option 可選項。用於同一裝置中不同應用的JPush服務相互拉起的功能。 -->        <!-- 若不啟用該功能可刪除該組件,將不拉起其他應用也不能被其他應用拉起 -->         <service             android:name="cn.jpush.android.service.DaemonService"             android:enabled="true"             android:exported="true">             <intent-filter >                 <action android:name="cn.jpush.android.intent.DaemonService" />                 <category android:name="您應用的包名"/>             </intent-filter>         </service>        <!-- Required -->        <receiver            android:name="cn.jpush.android.service.PushReceiver"            android:enabled="true" >          <intent-filter android:priority="1000">                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED_PROXY" />                 <category android:name="您應用的包名"/>             </intent-filter>            <intent-filter>                <action android:name="android.intent.action.USER_PRESENT" />                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />            </intent-filter>            <!-- Optional -->            <intent-filter>                <action android:name="android.intent.action.PACKAGE_ADDED" />                <action android:name="android.intent.action.PACKAGE_REMOVED" />                <data android:scheme="package" />            </intent-filter>        </receiver>     <!-- Required SDK核心功能-->        <activity            android:name="cn.jpush.android.ui.PushActivity"            android:configChanges="orientation|keyboardHidden"            android:exported="false" >            <intent-filter>                <action android:name="cn.jpush.android.ui.PushActivity" />                <category android:name="android.intent.category.DEFAULT" />                <category android:name="您應用的包名" />            </intent-filter>        </activity>        <!-- Required SDK核心功能-->        <service            android:name="cn.jpush.android.service.DownloadService"            android:enabled="true"            android:exported="false" >        </service>        <!-- Required SDK核心功能-->        <receiver android:name="cn.jpush.android.service.AlarmReceiver" />        <!-- User defined. 使用者自訂的廣播接收器-->         <receiver             android:name="您自己定義的Receiver"             android:enabled="true">             <intent-filter>                 <!--Required 使用者註冊SDK的intent-->                 <action android:name="cn.jpush.android.intent.REGISTRATION" />                  <!--Required 使用者接收SDK訊息的intent-->                  <action android:name="cn.jpush.android.intent.MESSAGE_RECEIVED" />                  <!--Required 使用者接收SDK通知欄資訊的intent-->                 <action android:name="cn.jpush.android.intent.NOTIFICATION_RECEIVED" />                  <!--Required 使用者開啟自訂通知欄的intent-->                 <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" />                  <!--Optional 使用者接受Rich Push Javascript 回呼函數的intent-->                 <action android:name="cn.jpush.android.intent.ACTION_RICHPUSH_CALLBACK" />                  <!-- 接收網路變化 串連/斷開 since 1.6.3 -->                 <action android:name="cn.jpush.android.intent.CONNECTION" />                 <category android:name="您應用的包名" />             </intent-filter>         </receiver>        <!-- Required. For publish channel feature -->        <!-- JPUSH_CHANNEL 是為了方便開發人員統計APK分發渠道。-->        <!-- 例如: -->        <!-- 發到 Google Play 的APK可以設定為 google-play; -->        <!-- 發到其他市場的 APK 可以設定為 xxx-market。 -->        <!-- 目前這個渠道統計功能的報表還未開放。-->        <meta-data android:name="JPUSH_CHANNEL" android:value="developer-default"/>        <!-- Required. AppKey copied from Portal -->        <meta-data android:name="JPUSH_APPKEY" android:value="Your AppKey"/>     </application></manifest>
最後在MainActivity中初始化(一般是在Application中初始化,這裡)
public class MainActivity extends Activity {    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        JPushInterface.setDebugMode(true);//測試用的        JPushInterface.init(this);    }  }

現在大功告成!





android極光推送學習

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.