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

概述

公司準備採用個推做爲第三方推送平臺,我做爲客戶端的頭號小鳥,掐指一算已經畢業 0.1 年了,Leader 準備把這個簡單而又獨立的功能點交給我來處理,我緊張兮兮的打開官網集成文檔 學習了起來。其實早在本身大二的時候就集成過個推 SDK,溜達一圈又回來集成個推推送SDK了,發現如今的個推 SDK 與當年相比,集成起來真的方便多了。此次集成的是Android推送SDK,但願這篇文章,可讓同窗們能夠更加快捷的集成個推推送。html

思惟導圖

在這裏插入圖片描述

詳細步驟

下載 demo

個人師傅大鳥哥告訴我,集成各種 SDK 的第一步驟都是下載個 Demo,先把 Demo 跑起來看看是什麼鬼。咱也不敢問,咱也不敢說,先去下載個Demo玩玩。我選擇的是國內版本的個推 SDK,你們能夠自行選擇要下載的版本。使用 AS 3.1 把 Getui_SDK_Demo_AS_maven 這個工程直接運行起來,出現了下面這個界面(此處已經對我我的參數進行了手動馬賽克)。android

在這裏插入圖片描述
好了,按我大鳥哥的意思至少 demo 已經成功運行起來了,接下去就是去把上述的 APPID,APPKey 等參數換成本身的,那麼這些參數又是怎麼來的呢?

建立個推應用

看完 Demo 後,慌兮兮打開官網集成文檔,原來那些參數是須要建立應用纔會得到的,而 cid 是個推SDK 回調的,沒啥說的,那就 「註冊登陸-建立應用-獲取配置」 三連擊bash

註冊登陸帳號

GTAccount

建立應用

登入成功後,點擊個人應用進入,再接着點擊右上角的《建立應用》就能夠建立屬於本身的應用了,由於我已經建立完成,因此此處有城牆同樣厚的馬賽克🐩🐩🐩 微信

在這裏插入圖片描述

填寫自身 APP 的基礎信息 app

在這裏插入圖片描述
敲黑板!!!,iOS 是默認不勾選的,據說 iOS 有自帶的推送系統?先無論了,勾上再說,他們愛用不用。

獲取配置數據

因爲我已經註冊完成了,填完後的界面就要靠你們自行腦補了。應用建立成功後,就能夠查看咱們建立的 APP 所綁定的配置信息了。 maven

在這裏插入圖片描述
看到這裏,我終於知道了以前 Demo 裏面的那些配置信息是哪裏來的了,爲了保證我這些參數是有效的, 我還來了一波騷操做: 把 Demo 裏面的工程的包名換成本身建立 APP 的包名,appid等信息也進行了替換,發現成功拿到了 cid,問了下他們技術支持,大概意思是 只要拿到 cid,集成就完成了 90 %!!!,鳥弟我激動的搓起了小手。後面的思路就清晰了,無非是把 Demo 裏東西拷到本身的項目裏面就完事了嘛。

添加依賴及配置

我使用 Maven 的方式集成了 2.13.2.0 版本的 SDK,選用 Maven是爲了方(偷)便(懶)的集成!若是是選擇手動集成的,請瘋狂戳我 先看下他們的資料包的內容 學習

在這裏插入圖片描述
看這個資料包,發現要導入的東西仍是蠻多的, 各類資源,我選擇了 Maven 集成,那麼 jar 包& so 就無需導入了

添加 maven 庫

  • 在項目根目錄的 build.gradle 中添加 maven 庫,否則 load 不到 jar 包
allprojects {
    repositories {

        maven {
          url 'http://mvn.gt.igexin.com/nexus/content/repositories/releases'
        }
    }
}
複製代碼
  • 在 項目/app 目錄下的 build.gradle 中配置jar 包
dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.getui:sdk:2.13.2.0'
}
複製代碼

配置以前建立的 appid 等

依葫蘆畫瓢,這裏就直接從 demo 那邊拷過來就好了 千萬千萬要當心,認真核對每個參數,若是出現空格或者 Appid 與 AppKey寫反這類的低級錯誤真的要檢查到哭😭😭😭測試

manifestPlaceholders = [
    GETUI_APP_ID : "你的 APPID",
    GETUI_APP_KEY : "你的 APP_KEY",
    GETUI_APP_SECRET : "你的 APP_SECRET"
]
複製代碼

導入個推 res 文件

千萬千萬別忘了,我以前就在這個地方踩了坑,使用 maven 集成就再也不須要 so 文件,切記!gradle

  • 把 Getui_SDK_Demo_AS_maven/資源文件/res 裏面的文件一一對應導入到本身項目中的 app/src/main/res 下面

配置可選權限

可選可不選的權限,我這邊是寫上了,由於我項目中正好也須要用到這些權限,美滋滋~ui

<!-- 支持iBeancon 須要藍牙權限 -->
    <uses-permission android:name="android.permission.BLUETOOTH"/>
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>
    <!-- 支持個推3.0 電子圍欄功能 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
複製代碼

配置自定義服務

Demo 裏面還配置了自定義的 service,我也搞了後,官網上有這麼一句話

爲了讓推送服務在部分主流機型上更穩定運行,從2.9.5.0版本開始,個推支持第三方應用配置使用自定義Service來做爲推送服務運行的載體

都這麼說了,鳥弟我二話不說就 new 一個自定義服務,進行空實現便可

package com.xinwenwang.xy;

import com.igexin.sdk.PushService;

public class XyPushService extends PushService {

}

複製代碼

新建的 service 千萬別忘了把新建的 service 註冊到 AndroidManifest.xml 中,多麼痛的領悟

<service
  android:name="com.xxxx.yyyy.XyPushService"
  android:exported="true"
  android:label="PushService"
  android:process=":pushservice">
</service>
複製代碼

深刻一想也能夠理解爲啥要加個空實現的 service,就像集成微信分享同樣,微信分享也要求繼承一個指定的 activity。

編寫集成

這麼一步步的走下來,要配置挺多東西的,終於要開始初始化 SDK 了 🤷‍♀️🤷‍♀️🤷‍♀️

初始化 SDK

com.igexin.sdk.PushManager.getInstance().initialize(getApplicationContext(), com.xxxx.yyyy.XyPushService.class);

複製代碼

我這邊是在開屏頁初始化個推推送的,你們能夠隨意,只要在 activity 初始化便可,建議是初始化越早越好

接收推送服務事件

那麼問題來了,搞了上面這麼多東西,推送的消息或者透傳是怎麼個接收法呢?一頭霧水有木有!我又跑回去看了看 Demo,發現還有個叫 DemoIntentService 的玩意,打開一看裏面有不少不少的回調,鳥哥說的話果真帶勁呀,Demo 理解透,項目集成快! 建議你們直接把 Demo 中的 DemoIntentService 拷到本身的項目中,若是須要修改一些DemoIntentService 裏面的內容,自便哈。記得修改個名字,否則放在本身的項目裏面真的太 low 了!我暫名爲 XyPushIntentService。

  • 在AndroidManifest.xml中配置上述 IntentService 類:
<!-- 用戶自定義服務繼承自GTIntentService,做爲SDK與APP橋樑服務,用來接收各類消息和命令回覆-->
        <service android:name=".XyPushIntentService"
            android:permission="android.permission.BIND_JOB_SERVICE"/>
複製代碼
  • 在個推SDK初始化後,註冊上述 IntentService 類
// XyPushIntentService 爲第三方自定義的推送服務事件接收類
PushManager.getInstance().registerPushIntentService(getApplicationContext(), XyPushIntentService.class);
複製代碼

測試

總算集成完了,導入上述東西須要細心些哈,漏了一步有的你難受的。 項目跑起來後,在 XyPushIntentService 會有 cid 的回調,最直觀的方法是在 logcat 裏面輸入 clientid ,就能夠看到在控制檯輸出日誌了,這個 clientID 至關於此 APP 在該設備上的惟一識別碼。

在這裏插入圖片描述
最後一步確定是建立通知了。
在這裏插入圖片描述

在這裏插入圖片描述

這邊只是建立了一個最最最簡單的樣式僅供參考,我看這界面上的功能估計能夠知足各類運營的玩法了,我這邊就不獻醜了:)。 推送測試消息的時候,應用必定要在前臺,在前臺,在前臺,重要的事情說三遍

#尾聲 首次集成這類大型 SDK 讓我意想不到的順利,我和個人小夥伴們都😮驚呆了😮,後面我再仔細閱讀了下個推的文檔,他們家的功能仍是很齊全的,我僅是進行了最基礎的集成而已,不過也能夠知足產品與運營的需求了。不得不提一句,他們的技術支持服務確實夠勁(此處確實是一條廣告實錘了~),回覆的快而準。如今我得趕忙去寫 Bug 了,告辭👋👋👋~~~

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

行業前沿、移動開發、數據建模等乾貨內容,盡在公衆號:個推技術學院

相關文章
相關標籤/搜索