Android 信鴿推送需要注意的細節

分類:技術 時間:2016-10-25

由于信鴿接入文檔比較詳細,這里我不對如何接入進行闡述,想知道具體如何接入可以參考信鴿幫助手冊: 信鴿Android快速接入 ,在這里,我就說一些在文檔和信鴿提供的demo里不細致或者沒有或者以前我沒有發現的,但是比較實用的進行描述吧,也是一個工作的存檔。

Part1:信鴿注冊。

APP只有在完成信鴿的啟動與注冊后才可以信鴿SDK提供push服務,在這之前請確保配置AccessId和AccessKey。

新版的SDK已經將啟動信鴿和APP注冊統一集成在注冊接口中,即只需調用注冊接口便默認完成啟動和注冊操作。

注冊成功后,會返回設備token,token用于標識設備唯一性,同時也是信鴿維持與后臺連接的唯一身份標識。

關于如何獲取token請參考“獲取token”章節。注冊接口通常提供簡版和帶callback版本的接口,請根據業務需要決定選擇接口。

這是信鴿接入文檔里的話,一開始我以為只要信鴿注冊了一次,就ok了。事實上信鴿的token只要注冊過一次,只要你不反注冊就不會丟失。但是,你在后臺程序中關掉APP,信鴿就接收不到通知了。所以,你注冊的代碼必須寫在每次啟動APP都會去調用的地方。而且不能傻傻的跟我以前一樣,為了避免多次注冊還加個判斷token是否存在的代碼,這個確實是畫蛇添足啊!人家要的就是每次打開APP都注冊一次!(可能我的想法不是很正確啊!但這是我實際開發中遇到的,實際的方法,就是每次打開APP注冊)

Part2:debug模式。

XGPushConfig配置類 提供信鴿服務的對外配置API列表,方法默認為public static類型,對于本類提供的set和enable方法,要在XGPushManager接口前調用才能及時生效。

void enableDebug(Context context,boolean debugMode)

是否開啟debug模式,即輸出logcat日志(重要:為保證數據的安全性,發布前必須設置為false)

debug模式在實際開發中還是很重要的,因為我以前也在另一個項目中集成過信鴿,但是那邊需求比較簡單,只需要集成進去就可以了,所以也就沒有過多的關注過,但如果你的需求比較復雜,而你對信鴿了解還不是很深的時候,遇到問題,debug模式就能給你很大的幫助了,而且就是一句代碼的問題:

XGPushConfig.enableDebug(MainActivity.this, RuntimeStatus.isDebug());

RuntimeStatus.isDebug(),是我本地測試環境正式環境的字段。

Part3:信鴿推送通知欄點擊之重復打開APPamp;重復從Laucher主入口啟動問題

說到這個首先要推薦一篇文章。這是一篇別人工作的存檔,里面的字數特別少,相對于別人文章而言,但是卻每一句話都特別有用!

【Android】信鴿推送通知欄點擊之重復打開APPamp;重復從Laucher主入口啟動問題

http://blog.csdn.net/littlebrain4solving/article/details/50903052 鏈接地址

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 判斷是否從推送通知欄打開的 XGPushClickedResult click = XGPushManager.onActivityStarted(this); if(click !=null) { //從推送通知欄打開-Service打開Activity會重新執行Laucher流程 //查看是不是全新打開的面板 if(isTaskRoot()) { return; } //如果有面板存在則關閉當前的面板 finish(); }}

這段代碼可以很好的解決外部來了通知點開后會打開兩遍APP的問題,但是要注意一點就是這段話一定要放在onCreate的最開始的地方。放到其他代碼后面還是不能解決問題的。我就在這里摔了一跤,把這段代碼放在最后面,還是debug模式才發現這個問題。

Part4:從信鴿的Service外部進程打開Activity

這里特別指出一下就是去Activity的時候,必須指定FLAG_ACTIVITY_NEW_TASK標記。不加這句,就進不去Activity的界面。

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

Part5:更改信鴿通知欄的圖片大小

通知欄中信鴿推送的圖片,一般是在我們的AndroidManifest里的android:icon的屬性里添加的,一般都會選擇這里面的圖片。我們當然可以在這里進行圖片適配,但是安卓總有些奇葩手機,這樣的適配的不行的。所以,在反編譯之后,發現有幾句代碼可以專門針對信鴿的圖片進行更改。不去用icon里的圖片。

XGBasicPushNotificationBuilder builder =newXGBasicPushNotificationBuilder();

builder.setIcon(R.drawable.push_logo);//設置狀態欄的通知小圖標

XGPushManager.setDefaultNotificationBuilder(MainActivity.this, builder);

Part6:按返回鍵退出APP后,從通知點擊進入APP異常問題

這是我踩的一個坑,當然,這個跟我自己考慮不全更有關系。解決做法也很簡單。在點擊回調的地方onNotifactionClickedResult

這個函數里面,在獲取了信鴿傳過來的內容之后,加上去主界面的跳轉。

Intent intent =newIntent(context, MainActivity.class);

intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.putExtra(quot;push_paramsquot;, entity);

context.startActivity(intent);

在主界面做你想做的詳細跳轉。NoticeClassIntentEntity類是信鴿傳過來的內容的字段類,NoticeReceiver.NoticeClassIntent()是我自己項目里的具體跳轉類,是個static類型的。

private void sendMessage() {

Intent it = getIntent();

NoticeClassIntentEntity= (NoticeClassIntentEntity) it.getSerializableExtra(quot;push_paramsquot;);

if(entity !=null) {

NoticeReceiver.NoticeClassIntent(MainActivity.this, entity.messageType, entity);

}}

還有一點要注意是因為都是在主函數里面做的跳轉,當APP存在的時候點擊通知欄就必須在onNewIntent()調sendMessage()方法。

Part7:最后

如果大家有疑問或者其他處理方法可以給我留言,我會盡快答復,謝謝!


Tags: 信鴿推送 安卓開發

文章來源:http://www.jianshu.com/p/f1a453162044


ads
ads

相關文章
ads

相關文章

ad