Android 極光推送集成與使用詳解

極光新建應用

首先需要有極光賬號,在後臺新建應用
極光後臺界面
新建時會要求上傳app圖標和填寫app名字,然後需要完成推送設置
新建應用後
點擊推送設置後出現android 與iOS的按鈕,點擊android後填寫包名就好,
填寫好包名後然後點擊下載Demo來下載需要集成的控件,下載完成後,點擊集成指南來進行參照集成過程
集成
我一般習慣手動集成,把下載的Demo解壓後大體是這個結構
Demo解壓後
首先複製文件,把libs裏面的文件都拷貝到項目app目錄下的libs包裏面,把res文件夾下的資源拷貝到自己的資源文件夾下(注意values裏面的strings與style,不要直接覆蓋,把內容複製到自己的文件中去),然後打開AndroidManifest文件,把標註了Required的部分複製到自己的AndroidManifest中去,裏面包名與極光的appKey都是配置好的。
然後,最最重要的一點 有好多人都是運行的時候出現了極光獲取SDK版本失敗的log
Get sdk version fail![獲取sdk版本失敗!],我用我集成了十幾個app的經驗告訴你,有百分之八十的概率是因爲沒有在app目錄裏的build.gradle中配置

 sourceSets.main {
        jniLibs.srcDirs = ['libs']
    }

這句代碼,它是用來引入libs裏面的.so文件的。
到這配置文件就好了,接下來就需要集成推送代碼了。
打開Demo裏的src,把裏面有ExampleApplication拷貝到項目,並且在AndroidManifest中引入,如果項目已經有了Application,那就把

JPushInterface.setDebugMode(true);  // 設置開啓日誌,發佈時請關閉日誌
JPushInterface.init(this);          // 初始化 JPush

這兩句代碼拷貝到自己的Application的onCreate方法上。
到此最基本的集成就完成了,項目跑一遍後log日誌會出現Login succeed的提示,然後就可以在後臺測試一下推送通知了,
推送通知界面
注意,在極光推送的集成指南中,到此也就結束了,但真正在app使用中還是有些問題需要注意


以上的推送設置只會推送給所有用戶
如果需要全部推送,不用看。
實際上大多app是需要登錄的,推送在更多時候是需要分類推送,或者針對一個用戶推送。
我來舉個栗子,你的app是一個技術分享app。
用戶註冊後會選擇自己的職業或者感興趣的領域,如果他是android工程師,難道你要給他推送iOS的知識乾貨麼?,所以需要分類推送,這就需要極光裏的標籤。
而你在app裏面寫了一篇很讚的文章,你有人給你點贊或者評論,你接收到推送的通知,xxx點讚了你的文章,xxx評論了你的文章,這就是針對一個用戶推送,這就需要極光裏的別名
暫且不說後臺需要怎麼做,我只說app 端,用戶需要在登錄後通過方法

JPushInterface.setAliasAndTags();

給自己打一個別名和標籤,讓後臺知道你是哪一類,然後針對性推送

登錄與註銷
如果需要全部推送,不用看。
用戶登錄後能夠接收到通知,但是註銷後呢?如果僅僅使用了上面的過程,我可以很負責任的告訴你,你退出登錄後仍然能接收到通知,因爲你開啓了推送,並沒有在註銷時停止推送。
註銷後

 JPushInterface.stopPush(getApplicationContext());

登錄設置setAliasAndTags後判斷如果推送停止的話恢復推送

  if (JPushInterface.isPushStopped(mContext)) {
                        JPushInterface.resumePush(getApplicationContext());
                    }

點擊通知欄上的通知後通知會消失
真正在app上會有要求,比如說你需要做成點擊後跳轉到某一個頁面,打開Demo裏的src中的MyReceiver文件,它就是來監聽通知的,可以把它拷貝到項目,注意不要忘了在AndroidManifest中聲明哦,

 <receiver
            android:name="包名.MyReceiver"
            android:exported="false"
            android:enabled="true">
            <intent-filter>
                <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  用戶接收SDK通知欄信息的intent-->
                <action android:name="cn.jpush.android.intent.NOTIFICATION_OPENED" /> <!--Required  用戶打開自定義通知欄的intent-->
                <action android:name="cn.jpush.android.intent.CONNECTION" /><!-- 接收網絡變化 連接/斷開 since 1.6.3 -->
                <category android:name="包名" />
            </intent-filter>
        </receiver>

然後再來修改一下MyReceiver,裏面就有點擊通知後的操作,修改裏面的intent和傳值

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章