導航:首頁 > 操作系統 > android友盟分享集成

android友盟分享集成

發布時間:2023-08-19 06:56:56

android友盟推送集成

友盟官方文檔: https://developer.umeng.com/docs/67966/detail/153908

第一次認真集成推送,碰到了一些問題,記錄一下。

首先講一下實現原理,我們用的是友盟。Android比iOS要麻煩很多。

友盟集成是需要後端配合的,具體就是後端調用友盟的介面,向友盟推送一條消息,然後友盟再向在他們平台注冊過的app發送一條消息,我們要做的就是把接收到的消息展示出來。

需求:用戶要能在各個時候都能收到我們APP的推送,並且能對應打開不同的界面

解決方法:集成友盟,但是Android只簡單集成友盟是不行的,在APP被殺死以後,就接收不到通知了,所以需要額外集成廠商通道。另一個和iOS不一樣的就是,iOS在打開當前APP的時候,可以收到橫幅推送,但是Android需要自己做。

什麼是廠商通道:

由於國內手機廠商過多地使用應用保活方案實現消息推送功能,因此導致手機耗電加快、卡頓。國內部分手機廠商發現了這一問題,自己推出了消息推送服務。這些手機廠商通過進程管理,殺死後台進程,並提供消息推送能力,讓消息通過手機廠商官方推送通道下發到應用程序中。這類典型的手機廠商有小米、華為等。

大致分為兩部分:

正常推送集成。

五大廠商通道集成。

詳見友盟官方文檔: https://developer.umeng.com/docs/67966/detail/153908

點擊推送信息以後的處理,收到推送的時候的回調

UmengNotificationClickHandler notificationClickHandler =new UmengNotificationClickHandler() {

@Override

    public void dealWithCustomAction(Context context, UMessage msg) {

     //點擊推送通知以後的處理

        Log.i(TAG,"notificationClickHandler "+msg);

    }

};

UmengMessageHandler messageHandler =new UmengMessageHandler() {

@Override

    public void dealWithCustomMessage(final Context context, final UMessage msg) {

Log.i(TAG,"message "+msg);

    }

@Override

    public NotificationgetNotification(Context context, UMessage uMessage) {

     //手機收到推送的時候的回調

        Log.i(TAG,"message ");

        //返回默認構造

        return super.getNotification(context, uMessage);

    }

};

mPushAgent.setNotificationClickHandler(notificationClickHandler);

mPushAgent.setMessageHandler(messageHandler);

設置最多能看到的推送條數

mPushAgent.setDisplayNotificationNumber(3);

 如果需求中需要打開APP中某個界面,責需要觀察 "after_open"欄位,默認是  "go_app",需要服務端同學配合

{

    "msg_id": "uu481201399440513912",

    "display_type": "notification",

    "alias": "",

    "random_min": 0,

    "body": {

        "title": "測試自定義參數",

        "ticker": "測試自定義參數",

        "text": "無",

        "after_open": "go_app",

        "url": "",

        "activity": "",

        "custom": "",

        "play_vibrate": "true",

        "play_sound": "true",

        "play_lights": "true"

    },

    "extra": {

        "key1": "value1",

        "key2": "value2"

    }

}

成功以後可以看log

主要看after_open,默認是打開app

友盟官方常見問題: https://developer.umeng.com/docs/67966/cate/66637

1.集成以後收不到推送

(1) mPushAgent.register()要放在application中調用,放在別的地方不起作用

(2) 檢查so文件有沒有放錯地方

(3) 打開日誌提示,仔細看提示:UMConfigure.setLogEnabled(true)

2.java.lang.ClassNotFoundException: com.ut.mini.UTAnalytics

盡量更新到最新版本的引用,友盟開發說這個只是提示,不用太在意....

3.殺死進程以後收不到推送

解決方法:集成各個廠商通道

iOS的小夥伴集成以後,就算殺死APP也可以收到推送,為啥Android不可以,傷感,看了文檔才知道,我們要集成廠商通道,

4.集成以後收不到推送,顯示送達卻沒有彈出通知

manifest裡面的package最好與build.gradle中的applicationId不一 致, 因為我們項目有兩個applicationId,所以會出現這種情況

需調用setResourcePackageName設置資源文件包名

⑵ 如何實現友盟第三方登錄與分享

獲取友盟Appkey
如果你之前已經在友盟注冊了應用,並獲取到了Appkey,可以繼續使用它.

如果你尚未在友盟注冊開發者賬號,需要先注冊,注冊之後登錄你的賬號,點擊添加新應用,填寫完應用基本信息後,將進入"下載SDK並添加代碼"頁面,此頁面即可得到Appkey。

下載並安裝SDK
* 下載[SDK最新版](http://dev.umeng.com/social/android/sdk-download)
* 添加代碼和資源引用,我們提供了兩種方式,可以根據需求選擇

A.解壓SDK壓縮包,將文件夾中的social_sdk_library_project文件夾導入Eclipse,並在您的工程中添加對此項目的引用即可。

B.解壓SDK壓縮包,將文件夾中的'main/libs'和'main/res'文件夾復制到你的項目工程根目錄下(如使用'ADT 17'以下用戶需要手動添加'libs'下的jar文件到工程Path中),同時將需要添加的對應平台(platform文件夾下)的jar包和res文件放到你的工程目錄下 />

針對不平台所需要添加的數據

1 微信平台
2
3 <activity
4 android:name="com.umeng.example.wxapi.WXEntryActivity"
5 android:configChanges="keyboardHidden|orientation|screenSize"
6 android:exported="true"
7 android:screenOrientation="portrait"
8 android:theme="@android:style/Theme.Translucent.NoTitleBar" /> 9
10 人人網
11
12 <activity
13 android:name="com.renn.rennsdk.oauth.OAuthActivity"
14 android:configChanges="orientation|navigation|keyboardHidden" />15
16 騰訊
17
18<activity
19 android:name="com.tencent.tauth.AuthActivity"
20 android:launchMode="singleTask"
21 android:noHistory="true" >
22 <intent-filter>
23 <action android:name="android.intent.action.VIEW" />
24 <category android:name="android.intent.category.DEFAULT" />
25 <category android:name="android.intent.category.BROWSABLE" />
26 <data android:scheme="tencent100424468" />
27 </intent-filter>
28 </activity>
29 <activity android:name="com.tencent.connect.common.AssistActivity"
30 android:screenOrientation="portrait"
31 android:theme="@android:style/Theme.Translucent.NoTitleBar" />32
33 谷歌地圖
34
35 <uses-library
36 android:name="com.google.android.maps"
37 android:required="false" />
38 <uses-library android:name="android.test.runner" />39 facebook
40 <activity
41 android:name="com.facebook.FacebookActivity"
42 android:configChanges="keyboard|keyboardHidden|screenLayout|screenSize|orientation"
43 android:label="@string/app_name"
44 android:theme="@android:style/Theme.Translucent.NoTitleBar" />
45 <provider android:name="com.facebook.FacebookContentProvider" android:authorities="com.facebook.app.FacebookContentProvider+appid"
46 android:exported="true" />
47 <meta-data
48 android:name="com.facebook.sdk.ApplicationId"
49 android:value="@string/facebook_app_id" />50
51 新浪微博
52
53 <activity
54 android:name=".WBShareActivity"
55 android:configChanges="keyboardHidden|orientation"
56 android:screenOrientation="portrait" >
57 <intent-filter>
58 <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
59 <category android:name="android.intent.category.DEFAULT" />
60 </intent-filter>
61 </activity>
62 <activity
63 android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
64 android:configChanges="keyboardHidden|orientation"
65 android:windowSoftInputMode="adjustResize"
66 android:exported="false" >
67 </activity>68
69 <service android:name="com.sina.weibo.sdk.net.DownloadService"
70 android:exported="false"></service>71
72 支付寶
73
74<activity
75 android:name=".apshare.ShareEntryActivity"
76 android:configChanges="keyboardHidden|orientation|screenSize"
77 android:exported="true"
78 android:screenOrientation="portrait"
79 android:theme="@android:style/Theme.Translucent.NoTitleBar" />

4. 打開平台選擇面板

4.1 各個平台的配置,建議放在全局Application或者程序入口

1 PlatformConfig.setWeixin("wx967daebe835fbeac", ""); //微信 appid appsecret
2 PlatformConfig.setSinaWeibo("3921700954","");//新浪微博 appkey appsecret
3
4 PlatformConfig.setYixin("");//易信 appkey
5
6 PlatformConfig.setRenren("201874","","");//人人 appid appkey appsecret
7 PlatformConfig.setQQZone("100424468", ""); // qq qzone appid appkey
8 PlatformConfig.setAlipay("2015111700822536");//alipay appid

說明:需要使用第三方公司api的平台,新浪,騰訊等,是需要去申請appkey的。人人豆瓣只能在伺服器端設置。其它需要配置appid的平台,如qq,微信,易信,twitter等都需要在本地設置。還有一部分平台需要在mainfest中配置,前面已經提到過。
授權
目前友盟社會化組件支持的第三方登錄平台為:新浪微博、QQ、微信、人人網、豆瓣。(特別說明:QQ空間,qq微博使用qq授權)

⑶ 友盟-推送-Andorid-「Alias」是什麼, 該如何使用

不少開發者在使用友盟推送的時候,對Alias的用法和使用場景不是太理解,這篇文章給大家普及一下Alias相關的內容:

我們先從產品層面上對Alias的設計思想說起,這樣能幫助大家更好的理解和使用Alias。在我們官方文檔裡面,Alias的定義是: "設備別名,將別名與設備做綁定,便於部分App開發者使用自有賬號或者第三方賬號體系來做消息推送"。定義裡面涉及到幾個重要的點:
首先,Alias是和設備綁定的,友盟推送對設備的標識是device-token,也就是說,Alias與友盟device-token是綁定對應的。從這個層面來講,Alias可以是開發者的賬號系統(包括第三方賬號體系),也可以是開發者自己對設備的標識體系(如安卓設備上的imei+mac),或者是其它的開發者能保證唯一性的ID體系,這些都是由開發者自己決定的。提問中問到是否可以把Alias理解為賬號系統,狹義上講可以這么理解,實際上,友盟推送賦予了Alias更多的靈活性。
其次,結合到越來越多的App提供第三方社交平台賬號登陸的特點,我們在Alias的設計上也充分考慮到了賬號的需求,所以在官方文檔中,我們提到在使用Alias的時候,必須要關聯一個alias_type, 如果是開發者自定義的alias(包括自有賬號系統),這個alias_type是可以隨便定義的;如果是用了第三方賬號系統,我們預提供了20多種主流的開放平台的賬號類型,如新浪微博(SINA_WEIBO), 微信(WEIXIN)等。填寫alias_type的作用是,友盟推送會和友盟社會化分享服務做數據上的打通,更好的從數據層面發揮價值,為開發者服務。說到這里,我們再次精確一下Alias的概念,即別名(Alias)+別名類型(alias_type)與設備的綁定。
最後,我們來聊聊Alias的用法,這個也是開發者們非常關心的。我們Alias的綁定操作是在SDK端提供的,開發者只需要在SDK端調用mPushAgent.addAlias(alias, alias_type)這個介面,友盟推送SDK就負責把alias+alias_type與友盟的device-token做綁定,將綁定關系回傳到友盟後端伺服器。之後開發者就可以根據自有業務邏輯,調用友盟伺服器端介面,根據Alias來做個性化推送了。由此來看,Alias的作用是能讓開發者結合自有的賬號(此處需要理解成廣義的賬號)體系,來做更個性化、精細化的推送。下圖是一個簡化的Alias架構,幫助大家理解Alias的用法:

關於Alias的相關介面,我們的友盟消息推送Android文檔提供了非常豐富的介面供開發者調用:
[Java] 純文本查看 復制代碼
?
1
2
3
4
5
添加Alias
mPushAgent.addAlias("[email protected]", ALIAS_TYPE.SINA_WEIBO);

移除Alias
mPushAgent.removeAlias("[email protected]", ALIAS_TYPE.SINA_WEIBO);

注意,在App伺服器端調用友盟伺服器端介面做推送的時候,一定不要忘了傳入alias_type的參數。

關於Alias基本的話題差不多解釋清楚了,最後再和大家深入聊聊Alias用作賬號系統涉及到多賬號多設備登陸的問題,這個時候,alias_type就派上用場了,相信看過這個章節後,大家會對我們Alias的設計機制有更深入的理解:
1. 多個賬號登陸同一台設備,具體還要細分為兩種case:
如果是同一個alias_type,那麼以最後綁定的alias為准。舉個例子: (alias_A, alias_type_A)先做了綁定,之後(alias_B, alias_type_A)後做了綁定,那麼,如果這個時候給alias_A發消息,設備是不會收到消息的,因為在友盟推送後台device-token是和最後登陸的alias_B做綁定的。這個在實際業務場景中也成立,最後一個登錄的賬號才是這台設備當前真實的用戶。
如果不是同一個alias_type, 那麼前後兩個綁定的alias均生效。舉個例子: (alias_A, alias_type_A)先做了綁定,之後是(alias_B, alias_type_B)做了綁定,那麼不管是給alias_A發消息,還是給alias_B發消息,設備均能收到消息。因為alias_type變化之後,友盟推送後台確定不了這是同一個用戶(eg: 同一個用戶使用不同平台的賬號登錄),還是不同的用戶(不同的用戶,使用不同的賬號登錄),友盟只能簡單的判定這兩個不同alias_type的賬號是兩個不同的賬號。這種場景是需要特別注意的,建議開發者在實際的集成過程中盡量避免這種使用場景。
2. 同一個賬號登錄多台設備:
這種情況處理起來就比較簡單了,即一個alias和多個device-token做綁定。如果給這個alias發消息,我們會給所有和這個alias綁定的設備都去推送消息。

開發者在具體使用過程中,可能會想到Alias做了綁定(addAlias)或者解除(removeAlias)之後,多長時間能在後端生效。 Alias介面,是一個實時的介面,不管是在「測試模式」下,還是在「正式模式」下,都是實時生效的。不過在集成測試階段,還是建議開發者把手頭的設備添加到"測試模式"下的測試設備集合裡面,關於「測試模式」的更多介紹,請參考友盟推送「測試模式」介紹。

⑷ Android分享圖片和視頻失敗,怎麼辦

目前實現一鍵分享功能的方式有兩種:
1.需要集成第三方官方SDK包,在獲得官方授權後調用其API來完成一鍵分享功能,例如使用友盟分享等
優點:無縫集成,功能多
缺點:需要集成官方的SDK包並通過申請官方的授權才可進行開發
2.不需要使用任何第三方SDK包,可以直接調起實現了分享功能的應用的activity來進行分享
優點:不需要使用任何第三方SDK包和申請官方授權
缺點:需要手機安裝你需要分享的應用(這一點非常重要,一開始測試的時候一直不成功,提示「沒有應用可執行此操作」,後來找了很久才發現是我手機沒有安裝相對應的應用,這也是不好方便的地方)

⑸ 一些Android開發中常用的第三方sdk

1、Share SDK官網 www.mob.com。免費集成注冊簡訊驗證碼,友好的分享功能。

2、環信sdk。主要是集成,聊天相關sdk。

3、Ping++聚合支付。解決集成支付sdk。

4、友盟分享、統計。

5、網路統計

6、極光推送、個推推送

7、360加固服務

8、網路加固、統計服務

9、融雲通訊---即時通訊

10、容聯 雲通訊

11、極速數據、阿凡達數據、聚合數據

閱讀全文

與android友盟分享集成相關的資料

熱點內容
有什麼做手帳app 瀏覽:156
phpjquery源碼 瀏覽:884
大話西遊手游源碼 瀏覽:653
javaudp代碼 瀏覽:660
linuxu盤啟動win7 瀏覽:990
如何啟用交換機dhcp伺服器 瀏覽:237
三田汽車壓縮機好嗎 瀏覽:294
馬蜂窩app偏向什麼客戶 瀏覽:366
php簡單的登錄注冊 瀏覽:554
我們接到上級命令 瀏覽:349
php本周星期一 瀏覽:65
裘錫圭pdf 瀏覽:726
android模擬器調試 瀏覽:135
sap命令大全 瀏覽:296
mysql導出數據命令 瀏覽:954
文件夾隱藏了出不來 瀏覽:564
電信網上大學源碼 瀏覽:206
rr輪轉調度演算法 瀏覽:253
我的世界無法登入伺服器怎麼辦 瀏覽:151
文件加密授權特定隱藏訪問控制 瀏覽:803