溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

震驚!安卓推送SDK集成居然如此簡單!

發(fā)布時(shí)間:2020-08-11 10:38:16 來源:ITPUB博客 閱讀:204 作者:個(gè)推2018 欄目:移動(dòng)開發(fā)

震驚!安卓推送SDK集成居然如此簡單!

概述

公司準(zhǔn)備采用個(gè)推作為第三方推送平臺(tái),我作為客戶端的頭號小鳥,掐指一算已經(jīng)畢業(yè) 0.1 年了,Leader 準(zhǔn)備把這個(gè)簡單而又獨(dú)立的功能點(diǎn)交給我來處理,我緊張兮兮的打開 官網(wǎng)集成文檔 學(xué)習(xí)了起來。其實(shí)早在自己大二的時(shí)候就集成過個(gè)推 SDK,溜達(dá)一圈又回來集成個(gè)推推送SDK了,發(fā)現(xiàn)現(xiàn)在的個(gè)推 SDK 與當(dāng)年相比,集成起來真的方便多了。這次集成的是Android推送SDK,希望這篇文章,可以讓同學(xué)們可以更加快捷的集成個(gè)推推送。

思維導(dǎo)圖

震驚!安卓推送SDK集成居然如此簡單!cdn.xitu.io/2019/8/27/16cd2c41d4126fba?imageView2/0/w/1280/h/960/format/webp/ignore-error/1">

詳細(xì)步驟

下載 demo

我的師傅大鳥哥告訴我,集成各類 SDK 的第一步驟都是下載個(gè) Demo,先把 Demo 跑起來看看是什么鬼。咱也不敢問,咱也不敢說,先去 下載個(gè)Demo玩玩。我選擇的是國內(nèi)版本的個(gè)推 SDK,大家可以自行選擇要下載的版本。使用 AS 3.1 把  Getui_SDK_Demo_AS_maven 這個(gè)工程直接運(yùn)行起來,出現(xiàn)了下面這個(gè)界面(此處已經(jīng)對我個(gè)人參數(shù)進(jìn)行了手動(dòng)馬賽克)。

震驚!安卓推送SDK集成居然如此簡單! "/> 好了,按我大鳥哥的意思至少 demo 已經(jīng)成功運(yùn)行起來了,接下去就是去把上述的 APPID,APPKey 等參數(shù)換成自己的,那么這些參數(shù)又是怎么來的呢?

創(chuàng)建個(gè)推應(yīng)用

看完 Demo 后,慌兮兮打開官網(wǎng)集成文檔,原來那些參數(shù)是需要?jiǎng)?chuàng)建應(yīng)用才會(huì)獲得的,而 cid 是個(gè)推SDK 回調(diào)的,沒啥說的,那就 “注冊登錄-創(chuàng)建應(yīng)用-獲取配置” 三連擊

注冊登錄賬號:

震驚!安卓推送SDK集成居然如此簡單! "/>

創(chuàng)建應(yīng)用

登入成功后,點(diǎn)擊我的應(yīng)用進(jìn)入,再接著點(diǎn)擊右上角的《創(chuàng)建應(yīng)用》就可以創(chuàng)建屬于自己的應(yīng)用了,因?yàn)槲乙呀?jīng)創(chuàng)建完成,所以此處有城墻一樣厚的馬賽克????????????

震驚!安卓推送SDK集成居然如此簡單! "/>

填寫自身 APP 的基礎(chǔ)信息

震驚!安卓推送SDK集成居然如此簡單! "/> 敲黑板?。?!,iOS 是默認(rèn)不勾選的,聽說 iOS 有自帶的推送系統(tǒng)?先不管了,勾上再說,他們愛用不用。

獲取配置數(shù)據(jù)

由于我已經(jīng)注冊完成了,填完后的界面就要靠大家自行腦補(bǔ)了。應(yīng)用創(chuàng)建成功后,就可以查看我們創(chuàng)建的 APP 所綁定的配置信息了。

震驚!安卓推送SDK集成居然如此簡單! "/> 看到這里,我終于知道了之前 Demo 里面的那些配置信息是哪里來的了,為了保證我這些參數(shù)是有效的, 我還來了一波騷操作: 把 Demo 里面的工程的包名換成自己創(chuàng)建 APP 的包名,appid等信息也進(jìn)行了替換,發(fā)現(xiàn)成功拿到了 cid ,問了下他們技術(shù)支持,大概意思是 只要拿到 cid,集成就完成了 90 %!?。?/span> ,鳥弟我激動(dòng)的搓起了小手。后面的思路就清晰了,無非是把 Demo 里東西拷到自己的項(xiàng)目里面就完事了嘛。

添加依賴及配置

我使用 Maven 的方式集成了  2.13.2.0 版本的 SDK,選用 Maven是為了方(偷)便(懶)的集成!如果是選擇手動(dòng)集成的, 請瘋狂戳我 先看下他們的資料包的內(nèi)容

震驚!安卓推送SDK集成居然如此簡單! "/> 看這個(gè)資料包,發(fā)現(xiàn)要導(dǎo)入的東西還是蠻多的, 各種資源,我選擇了 Maven 集成,那么 jar 包& so 就無需導(dǎo)入了

添加 maven 庫

  • 在項(xiàng)目根目錄的 build.gradle 中添加 maven 庫,不然 load 不到 jar 包
allprojects {     repositories {         maven {           url 'http://mvn.gt.igexin.com/nexus/content/repositories/releases'         }     } } 復(fù)制代碼
  • 在 項(xiàng)目/app 目錄下的 build.gradle 中配置jar 包
dependencies {     compile fileTree(dir: 'libs', include: ['*.jar'])     compile 'com.getui:sdk:2.13.2.0' } 復(fù)制代碼

配置之前創(chuàng)建的 appid 等

依葫蘆畫瓢,這里就直接從 demo 那邊拷過來就行了 千萬千萬要小心,認(rèn)真核對每一個(gè)參數(shù),如果出現(xiàn)空格或者 Appid 與 AppKey寫反這類的 低級錯(cuò)誤真的要檢查到哭????????????

manifestPlaceholders = [     GETUI_APP_ID : "你的 APPID",     GETUI_APP_KEY : "你的 APP_KEY",     GETUI_APP_SECRET : "你的 APP_SECRET" ] 復(fù)制代碼

導(dǎo)入個(gè)推 res 文件

千萬千萬別忘了,我之前就在這個(gè)地方踩了坑,使用 maven 集成就不再需要 so 文件,切記!

  • 把 Getui_SDK_Demo_AS_maven/資源文件/res 里面的文件一一對應(yīng)導(dǎo)入到自己項(xiàng)目中的 app/src/main/res 下面

配置可選權(quán)限

可選可不選的權(quán)限,我這邊是寫上了,因?yàn)槲翼?xiàng)目中正好也需要用到這些權(quán)限,美滋滋~

      <!-- 支持iBeancon 需要藍(lán)牙權(quán)限 -->     <uses-permission android:name="android.permission.BLUETOOTH"/>     <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>     <!-- 支持個(gè)推3.0 電子圍欄功能 -->     <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>     <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/> 復(fù)制代碼

配置自定義服務(wù)

Demo 里面還配置了自定義的 service,我也搞了后,官網(wǎng)上有這么一句話

為了讓推送服務(wù)在部分主流機(jī)型上更穩(wěn)定運(yùn)行,從2.9.5.0版本開始,個(gè)推支持第三方應(yīng)用配置使用自定義Service來作為推送服務(wù)運(yùn)行的載體

都這么說了,鳥弟我二話不說就 new 一個(gè)自定義服務(wù),進(jìn)行空實(shí)現(xiàn)即可

package com.xinwenwang.xy; import com.igexin.sdk.PushService; public class XyPushService extends PushService { } 復(fù)制代碼

新建的 service  千萬別忘了把新建的 service 注冊到 AndroidManifest.xml 中,多么痛的領(lǐng)悟

<service   android:name="com.xxxx.yyyy.XyPushService"   android:exported="true"   android:label="PushService"   android:process=":pushservice"> </service> 復(fù)制代碼

深入一想也可以理解為啥要加個(gè)空實(shí)現(xiàn)的 service,就像集成微信分享一樣,微信分享也要求繼承一個(gè)指定的 activity。

編寫集成

這么一步步的走下來,要配置挺多東西的,終于要開始初始化 SDK 了 ?????♀??????♀??????♀?

初始化 SDK

com.igexin.sdk.PushManager.getInstance().initialize(getApplicationContext(), com.xxxx.yyyy.XyPushService.class); 復(fù)制代碼

我這邊是在開屏頁初始化個(gè)推推送的,大家可以隨意,只要在 activity 初始化即可, 建議是初始化越早越好

接收推送服務(wù)事件

那么問題來了,搞了上面這么多東西,推送的消息或者透傳是怎么個(gè)接收法呢?一頭霧水有木有!我又跑回去看了看 Demo,發(fā)現(xiàn)還有個(gè)叫  DemoIntentService 的玩意,打開一看里面有很多很多的回調(diào),鳥哥說的話果然帶勁呀, Demo 理解透,項(xiàng)目集成快! 建議大家直接把 Demo 中的 DemoIntentService 拷到自己的項(xiàng)目中,如果需要修改一些DemoIntentService 里面的內(nèi)容,自便哈。記得修改個(gè)名字,不然放在自己的項(xiàng)目里面真的太 low 了!我暫名為 XyPushIntentService。

  • 在AndroidManifest.xml中配置上述 IntentService 類:
       <!-- 用戶自定義服務(wù)繼承自GTIntentService,作為SDK與APP橋梁服務(wù),用來接收各種消息和命令回復(fù)-->         <service android:name=".XyPushIntentService"             android:permission="android.permission.BIND_JOB_SERVICE"/> 復(fù)制代碼
  • 在個(gè)推SDK初始化后,注冊上述 IntentService 類
// XyPushIntentService 為第三方自定義的推送服務(wù)事件接收類 PushManager.getInstance().registerPushIntentService(getApplicationContext(), XyPushIntentService.class); 復(fù)制代碼

測試

總算集成完了,導(dǎo)入上述東西需要細(xì)心些哈,漏了一步有的你難受的。 項(xiàng)目跑起來后,在 XyPushIntentService 會(huì)有 cid 的回調(diào),最直觀的方法是在 logcat 里面輸入 clientid ,就可以看到在控制臺(tái)輸出日志了, 這個(gè) clientID 相當(dāng)于此 APP 在該設(shè)備上的唯一識別碼。

震驚!安卓推送SDK集成居然如此簡單! "/> 最后一步肯定是創(chuàng)建通知了。 震驚!安卓推送SDK集成居然如此簡單! "/>

震驚!安卓推送SDK集成居然如此簡單! "/>

這邊只是創(chuàng)建了一個(gè)最最最簡單的樣式僅供參考,我看這界面上的功能估計(jì)可以滿足各種運(yùn)營的玩法了,我這邊就不獻(xiàn)丑了:)。  推送測試消息的時(shí)候,應(yīng)用一定要在前臺(tái),在前臺(tái),在前臺(tái),重要的事情說三遍

#尾聲 首次集成這類大型 SDK 讓我意想不到的順利,我和我的小伙伴們都????驚呆了????,后面我再仔細(xì)閱讀了下個(gè)推的文檔,他們家的功能還是很齊全的,我僅是進(jìn)行了最基礎(chǔ)的集成而已,不過也可以滿足產(chǎn)品與運(yùn)營的需求了。不得不提一句,他們的技術(shù)支持服務(wù)確實(shí)夠勁(此處確實(shí)是一條廣告實(shí)錘了~),回復(fù)的快而準(zhǔn)?,F(xiàn)在我得趕緊去寫 Bug 了,告辭????????????~~~

原文鏈接: blog.csdn.net/u013651405/… 作者:吃飽了想睡

行業(yè)前沿、移動(dòng)開發(fā)、數(shù)據(jù)建模等干貨內(nèi)容,盡在公眾號:個(gè)推技術(shù)學(xué)院

震驚!安卓推送SDK集成居然如此簡單!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI