1 產(chǎn)品概述 友盟社會化組件,可以讓移動應(yīng)用快速具備社會化分享、登錄、評論、喜歡等功能,并提供實(shí)時(shí)、全面的社會化數(shù)據(jù)統(tǒng)計(jì)分析服務(wù)。 指南將會手把手教你使用社會化組件SDK,用5分鐘為APP增加新浪微博、騰訊微博、人人網(wǎng)分享功能。 注意:本文示例代碼均針對最新版SDK,如果你所用SDK的類名或方法名與此文不符合,請使用你所用SDK的隨包文檔、或者下載使用最新版SDK。 2 獲取友盟Appkey 如果你之前已經(jīng)在友盟注冊了應(yīng)用,并獲取到了Appkey,可以繼續(xù)使用它. 如果你尚未在友盟注冊開發(fā)者賬號,需要先注冊,注冊之后登錄你的賬號,點(diǎn)擊**添加新應(yīng)用**,填寫完應(yīng)用基本信息后,將進(jìn)入"下載SDK并添加代碼"頁面,此頁面即可得到Appkey 。 3 下載并安裝SDK 3.2 添加代碼和資源引用jar文件對應(yīng)列表 平臺 | jar文件 |
---|
騰訊微博 | SocialSDK_TencentWB_1.jar,SocialSDK_TencentWB_2.jar | QQ空間 | SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar | 微信好友 | SocialSDK_WeiXin.jar | QQ | SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar | Facebook | SocialSDK_facebook_1.jar,SocialSDK_facebook_2.jar | 易信 | SocialSDK_yixin_1.jar,SocialSDK_yixin_2.jar | 來往 | SocialSDK_laiwang_1.jar,SocialSDK_laiwang_2.jar |
注意 1:QQ跟QQ Zone SSO(免登錄)引用的jar文件相同。當(dāng)需要同時(shí)支持QQ跟QQ Zone的時(shí)候,只需添加一次SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件即可. 2:由于我們對微信的包名做了修改(libammsdk.jar -> SocialSDK_WeiXin.jar),如出現(xiàn)"Unable to execute dex: Multiple dex files define "問題,請刪除libammsdk.jar或者SocialSDK_WeiXin.jar中的一個(gè)即可解決問題。
添加資源文件跟jar文件有兩種方式,請根據(jù)您的需求進(jìn)行選擇方法A:添加工程引用(升級方便,推薦)解壓SDK壓縮包,將文件夾中的social_sdk_library_project文件夾導(dǎo)入Eclipse,并在您的工程中添加對此項(xiàng)目的引用即可。 方法B:添加資源到現(xiàn)有項(xiàng)目中解壓SDK壓縮包,將文件夾中的'libs'和'res'文件夾復(fù)制到你的項(xiàng)目工程根目錄下(如使用'ADT 17'以下用戶需要手動添加'libs'下的jar文件到工程Path中): 4 Manifest配置,添加友盟Appkey/Activity/權(quán)限<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas./apk/res/android"
package="com.umeng.example"
android:versionCode="1"
android:versionName="1.0" >
<application
android:debuggable="true"
android:icon="@drawable/icon"
android:label="@string/app_name"
android:theme="@android:style/Theme.Black.NoTitleBar" >
<activity
android:name=".UmengHome"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- ###################注冊SDK使用的Activity###################### -->
<!--分享編輯頁-->
<activity
android:name="com.umeng.socialize.view.ShareActivity"
android:configChanges="orientation|keyboard"
android:launchMode="singleTask"
android:noHistory="true"
android:theme="@style/Theme.UMDialog"
android:windowSoftInputMode="stateVisible|adjustResize" >
</activity>
<!-- ############ QQ空間和QQ SSO授權(quán)的Activity注冊 ############ -->
<activity android:name="com.tencent.tauth.AuthActivity" />
<!-- ###################添加UmengAppkey###################### -->
<meta-data
android:name="UMENG_APPKEY"
android:value="xxxxxxxxxxxxxxxxxxxxxx" >
</meta-data>
<!-- facebook相關(guān) -->
<activity
android:name="com.facebook.LoginActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 這里填寫你的facebook app id,必須聲明在string.xml中 -->
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
</application>
<uses-sdk android:minSdkVersion="8" />
<!-- ###################聲明SDK使用的相關(guān)權(quán)限###################### -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 檢測網(wǎng)絡(luò)狀態(tài) -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <!-- 獲取mac地址作為用戶的備用唯一標(biāo)識 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 獲取用戶手機(jī)的IMEI,用來唯一的標(biāo)識用戶。 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 緩存資源優(yōu)先存入SDcard -->
<uses-permission android:name="android.permission.INTERNET" /> <!-- 允許應(yīng)用程序聯(lián)網(wǎng),以便向我們的服務(wù)器端發(fā)送數(shù)據(jù)。 -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <!-- 用于評論模塊分享位置信息 -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 用于評論模塊分享位置信息 -->
</manifest>
如果選用多種UmengSDK產(chǎn)品使用不同Appkey,可為SocialSDK配置單獨(dú)的appkey,如下: /*代碼添加Appkey,如果設(shè)置了非null值,SocialSDK將使用該值.*/
SocializeConstants.APPKEY = "xxxxxxxxx";
5 設(shè)置分享內(nèi)容5.1 設(shè)置基本分享內(nèi)容// 首先在您的Activity中添加如下成員變量
final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share",
RequestType.SOCIAL);
// 設(shè)置分享內(nèi)容
mController.setShareContent("友盟社會化組件(SDK)讓移動應(yīng)用快速整合社交分享功能,http://www./social");
// 設(shè)置分享圖片, 參數(shù)2為圖片的url地址
mController.setShareMedia(new UMImage(getActivity(),
"http://www./images/pic/banner_module_social.png"));
// 設(shè)置分享圖片,參數(shù)2為本地圖片的資源引用
//mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));
// 設(shè)置分享圖片,參數(shù)2為本地圖片的路徑(絕對路徑)
//mController.setShareMedia(new UMImage(getActivity(),
// BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));
// 設(shè)置分享音樂
//UMusic uMusic = new UMusic("http://sns./test_music.mp3");
//uMusic.setAuthor("GuGu");
//uMusic.setTitle("天籟之音");
// 設(shè)置音樂縮略圖
//uMusic.setThumb("http://www./images/pic/banner_module_social.png");
//mController.setShareMedia(uMusic);
// 設(shè)置分享視頻
//UMVideo umVedio = new UMVideo(
// "http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");
// 設(shè)置視頻縮略圖
//umVedio.setThumb("http://www./images/pic/banner_module_social.png");
//umVedio.setTitle("友盟社會化分享!");
//mController.setShareMedia(umVedio);
5.2 分平臺設(shè)置分享內(nèi)容給不同的平臺設(shè)置不同的分享內(nèi)容,其中不同平臺的多媒體、文字內(nèi)容都可以定制化。當(dāng)某個(gè)平臺沒有設(shè)置定制化的分享內(nèi)容時(shí), 則會使用類似5.1中設(shè)置的基本分享內(nèi)容。示例代碼如下 : // 設(shè)置分享到微信的內(nèi)容, 圖片類型
UMImage mUMImgBitmap = new UMImage(getActivity(),
"http://www./images/pic/banner_module_social.png");
WeiXinShareContent weixinContent = new WeiXinShareContent(mUMImgBitmap);
weixinContent.setShareContent("來自友盟社會化組件(SDK)讓移動應(yīng)用快速整合社交分享功能,微信");
mController.setShareMedia(weixinContent);
// 設(shè)置朋友圈分享的內(nèi)容
CircleShareContent circleMedia = new CircleShareContent(new UMImage(getActivity(),
"http://www./images/pic/social/chart_1.png"));
circleMedia.setShareContent("來自友盟社會化組件(SDK)讓移動應(yīng)用快速整合社交分享功能,朋友圈");
mController.setShareMedia(circleMedia);
// 視頻分享,并且設(shè)置了騰訊微博平臺的文字內(nèi)容
UMVideo umVedio = new UMVideo(
"http://v.youku.com/v_show/id_XNTc0ODM4OTM2.html");
umVedio.setThumb("http://www./images/pic/banner_module_social.png");
umVedio.setTitle("友盟社會化組件視頻");
TencentWbShareContent tencentContent = new TencentWbShareContent(umVedio);
// 設(shè)置分享到騰訊微博的文字內(nèi)容
tencentContent.setShareContent("來自友盟社會化組件(SDK)讓移動應(yīng)用快速整合社交分享功能,騰訊微博");
// 設(shè)置分享到騰訊微博的多媒體內(nèi)容
mController.setShareMedia(tencentContent);
// ** 其他平臺的分享內(nèi)容.除了上文中已單獨(dú)設(shè)置了分享內(nèi)容的微信、朋友圈、騰訊微博平臺,
// 剩下的其他平臺的分享內(nèi)容都為如下文字和UMImage **
mController.setShareContent("友盟社會化組件(SDK)讓移動應(yīng)用快速整合社交分享功能,http://www./social");
// 設(shè)置分享圖片,參數(shù)2為圖片的url.
mController.setShareMedia(new UMImage(getActivity(),
"http://www./images/pic/banner_module_social.png"));
6 各種不同的分享接口,請根據(jù)定制需求自行選擇6.1 帶平臺選擇面板分享適用人群:希望10分鐘集成從無到有實(shí)現(xiàn)分享的開發(fā)者 接口說明:調(diào)用該接口將先彈出分享平臺選擇頁,選擇相應(yīng)的平臺將進(jìn)行授權(quán)并分享 // 設(shè)置分享平臺選擇面板的平臺顯示順序
// mController.getConfig().setPlatformOrder(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE,
// SHARE_MEDIA.QZONE,SHARE_MEDIA.QQ, SHARE_MEDIA.SINA);
// 是否只有已登錄用戶才能打開分享選擇頁
mController.openShare(getActivity(), false);
驗(yàn)證結(jié)果 | |
---|
| | 選擇分享平臺面板 | 分享編輯頁 |
6.2 帶編輯頁直接分享適用人群:較深耕細(xì)作型開發(fā)者,希望自定義分享列表,使用分享底層API,但仍使用友盟提供的分享編輯頁。 接口說明:如果已經(jīng)授權(quán),則直接跳轉(zhuǎn)到分享編輯頁,否則將進(jìn)行授權(quán)操作然后再跳轉(zhuǎn)到分享編輯頁.相比openShare,該接口不需要彈出分享面板。該接口支持所有平臺的分享(QQ好友,微信會有選擇好友的界面) // 參數(shù)1為Context類型對象, 參數(shù)2為要分享到的目標(biāo)平臺, 參數(shù)3為分享操作的回調(diào)接口
mController.postShare(mContext,SHARE_MEDIA.SINA,
new SnsPostListener() {
@Override
public void onStart() {
Toast.makeText(mContext, "開始分享.", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(SHARE_MEDIA platform, int eCode,SocializeEntity entity) {
if (eCode == 200) {
Toast.makeText(mContext, "分享成功.", Toast.LENGTH_SHORT).show();
} else {
String eMsg = "";
if (eCode == -101){
eMsg = "沒有授權(quán)";
}
Toast.makeText(mContext, "分享失敗[" + eCode + "] " +
eMsg,Toast.LENGTH_SHORT).show();
}
}
});
6.3 不帶分享編輯頁直接分享適用人群:較深耕細(xì)作型開發(fā)者,無分享編輯頁面,希望自定義分享列表,使用分享底層API。 接口說明:如果已經(jīng)授權(quán),調(diào)用該接口將直接進(jìn)行分享(不彈出分享編輯頁);否則將進(jìn)行授權(quán)操作然后再分享.該接口支持所有平臺的分享(QQ好友,微信會有選擇好友的界面) // 參數(shù)1為當(dāng)前Activity對象, 參數(shù)2為要分享到的目標(biāo)平臺, 參數(shù)3為分享操作回調(diào)接口
mController.directShare(mContext, SHARE_MEDIA.SINA,
new SnsPostListener() {
@Override
public void onStart() {
Toast.makeText(mContext, "分享開始",Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(SHARE_MEDIA platform,int eCode, SocializeEntity entity) {
if(eCode == StatusCode.ST_CODE_SUCCESSED){
Toast.makeText(mContext, "分享成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(mContext, "分享失敗",Toast.LENGTH_SHORT).show();
}
}
});
6.4 授權(quán)+直接分享適用人群:深耕細(xì)作型開發(fā)者,希望完全自定義界面,只使用分享相關(guān)底層API實(shí)現(xiàn)分享。 接口說明:實(shí)現(xiàn)"授權(quán)+直接分享",你可以將授權(quán)接口(doOauthVerify)跟直接分享接口(directShare)結(jié)合起來使用。實(shí)現(xiàn)只需簡單的四步: 步驟一:定義自己的分享面板 步驟二:判斷用戶是否已經(jīng)授權(quán) OauthHelper.isAuthenticated(mContext,SHARE_MEDIA.SINA)
步驟三:用戶授權(quán),建議在調(diào)用前先用OauthHelper.isAuthenticated()判斷用戶是否已經(jīng)授權(quán),否則會重復(fù)授權(quán) mController.doOauthVerify(mContext, SHARE_MEDIA.SINA, new UMAuthListener() {
@Override
public void onStart(SHARE_MEDIA platform) {
Toast.makeText(mContext, "授權(quán)開始", Toast.LENGTH_SHORT).show();
}
@Override
public void onError(SocializeException e, SHARE_MEDIA platform) {
Toast.makeText(mContext, "授權(quán)錯(cuò)誤", Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(Bundle value, SHARE_MEDIA platform) {
Toast.makeText(mContext, "授權(quán)完成", Toast.LENGTH_SHORT).show();
//獲取相關(guān)授權(quán)信息或者跳轉(zhuǎn)到自定義的分享編輯頁面
String uid = value.getString("uid");
}
@Override
public void onCancel(SHARE_MEDIA platform) {
Toast.makeText(mContext, "授權(quán)取消", Toast.LENGTH_SHORT).show();
}
} );
步驟四:調(diào)用直接分享API接口 //設(shè)置分享內(nèi)容
mController.setShareContent("友盟社會化組件(SDK)讓移動應(yīng)用快速整合社交分享功能,http://www./social");
//設(shè)置分享圖片
mController.setShareMedia(new UMImage(mContext, "http://www./images/pic/banner_module_social.png"));
//直接分享
mController.directShare(mContext, SHARE_MEDIA.SINA,
new SnsPostListener() {
@Override
public void onStart() {
Toast.makeText(mContext, "分享開始",Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete(SHARE_MEDIA platform,int eCode, SocializeEntity entity) {
if(eCode == StatusCode.ST_CODE_SUCCESSED){
Toast.makeText(mContext, "分享成功",Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(mContext, "分享失敗",Toast.LENGTH_SHORT).show();
}
}
});
注意:doOauthVerify接口目前不支持微信,微信朋友圈,F(xiàn)acebook,Twitter,GooglePlus,易信,易信朋友圈,來往,來往動態(tài),針對這些平臺可直接調(diào)用分享API接口進(jìn)行分享.
7 各平臺SSO(免登錄)配置SSO名詞解釋 : SSO英文全稱Single Sign On,單點(diǎn)登錄。SSO是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問所有相互信任的應(yīng)用系統(tǒng)。 例如用戶已經(jīng)登錄新浪微博客戶端,使用SSO授權(quán)登錄時(shí)則不需要用戶手動輸入用戶名、密碼,直接點(diǎn)擊登錄即可, 因此可成為免登錄.
7.1 如果有使用任一平臺的SSO授權(quán)或者集成了facebook平臺, 則必須在對應(yīng)的activity中實(shí)現(xiàn)onActivityResult方法, 并添加如下代碼@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/**使用SSO授權(quán)必須添加如下代碼 */
UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(requestCode) ;
if(ssoHandler != null){
ssoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
7.2 分享到微信和朋友圈1.添加微信和朋友圈所依賴的jar文件1.1 解壓已下載的SDK.zip文件,將SocialSDK_WeiXin.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中. 1.2 在libs目錄中找到SocialSDK_WeiXin.jar文件,鼠標(biāo)右鍵-->Add to Build Path. 2.添加如下集成代碼// wx967daebe835fbeac是你在微信開發(fā)平臺注冊應(yīng)用的AppID, 這里需要替換成你注冊的AppID
String appID = "wx967daebe835fbeac";
// 微信圖文分享必須設(shè)置一個(gè)url
String contentUrl = "http://www./social";
// 添加微信平臺,參數(shù)1為當(dāng)前Activity, 參數(shù)2為用戶申請的AppID, 參數(shù)3為點(diǎn)擊分享內(nèi)容跳轉(zhuǎn)到的目標(biāo)url
UMWXHandler wxHandler = mController.getConfig().supportWXPlatform(getActivity(),appID, contentUrl);
wxHandler.setWXTitle("友盟社會化組件還不錯(cuò)...");
// 支持微信朋友圈
UMWXHandler circleHandler = mController.getConfig().supportWXCirclePlatform(getActivity(),appID, contentUrl) ;
circleHandler.setCircleTitle("友盟社會化組件還不錯(cuò)...");
微信和朋友圈支持純文字,純圖片(點(diǎn)擊查看大圖),圖文,音樂,視頻分享 微信集成相關(guān)說明 1.微信集成注意以下幾點(diǎn): - 正確填寫AppID。
- 工程的包名必須同申請應(yīng)用的包名一致.
- 開發(fā)者的應(yīng)用需要通過審核。開發(fā)者在申請應(yīng)用必須要通過微信官網(wǎng)的審核才能進(jìn)行調(diào)試.
2.Demo中集成的微信無法使用 原因:Demo中使用的微信AppID綁定的簽名信息和你打包時(shí)所用的簽名信息不一致,導(dǎo)致無法響應(yīng). 解決辦法有兩個(gè),您任選其一: - 申請一個(gè)測試Demo中AppID.(申請地址).
填寫"包名"時(shí)請使用Demo的包名"com.umeng.soexample". 填寫"簽名"使用簽名生成工具(簽名工具)生成,簽名時(shí)填寫Demo的包名. 獲取微信AppID后替換Demo中的使用的AppID. - 使用SDK中的 debug.keystore編譯運(yùn)行Demo工程.(keystore使用方法).
7.3 分享給QQ好友 注意一定要添加7.1的onActivityResult 1. 添加QQ分享所依賴的jar文件1.1 解壓已下載的SocialSDK.zip文件,SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中. 1.2 在libs目錄中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,鼠標(biāo)右鍵-->Add to Build Path. 1.3 在AndroidManifest.xml中注冊AuthActivity,QQ空間和QQ共用該授權(quán)Activity,具體配置參考上文的AndroidManifest.xml文件. 2. 添加如下集成代碼// 參數(shù)1為當(dāng)前Activity, 參數(shù)2為用戶點(diǎn)擊分享內(nèi)容時(shí)跳轉(zhuǎn)到的目標(biāo)地址
mController.getConfig().supportQQPlatform(getActivity(), "http://www./social");
注意: QQ分享的內(nèi)容為音樂,視頻的時(shí)候,其形式必須為url;圖片支持url形式跟本地圖片。
7.4 SSO(免登錄)分享到QQ空間 注意一定要添加7.1的onActivityResult 1. 添加QQ空間所依賴的jar文件如果已經(jīng)添加了SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,則不需要再次添加. 1.1 解壓已下載的SocialSDK.zip文件,SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中. 1.2 在libs目錄中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,鼠標(biāo)右鍵-->Add to Build Path. 1.3 在AndroidManifest.xml中注冊AuthActivity,QQ空間和QQ共用該授權(quán)Activity,具體配置參考上文的AndroidManifest.xml文件. 2. 在集成代碼中添加如下代碼mController.getConfig().setSsoHandler( new QZoneSsoHandler(getActivity()) );
7.5 SSO(免登錄)分享到新浪微博 注意一定要添加7.1的onActivityResult 1.將SDK目錄下的src覆蓋到項(xiàng)目工程根目錄下,確保已添加'com/sina/sso/RemoteSSO.aidl'.2.在集成代碼中添加如下代碼//設(shè)置新浪SSO handler
mController.getConfig().setSsoHandler(new SinaSsoHandler());
7.6 SSO(免登錄)分享到騰訊微博注意一定要添加7.1的onActivityResult 1. 添加騰訊微博SSO所依賴的jar文件1.1 解壓已下載的SocialSDK.zip文件,將SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中. 1.2 在libs目錄中找到SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar文件,鼠標(biāo)右鍵-->Add to Build Path. 2. 在集成代碼中添加如下代碼//設(shè)置騰訊微博SSO handler
mController.getConfig().setSsoHandler(new TencentWBSsoHandler());
注意: 1.手機(jī)中必須安裝微博客戶端V3.8.1及以上的版本才支持SSO功能 2.騰訊微博的SSO沒有回調(diào)。由于騰訊微博SSO沒有提供回調(diào),因此騰訊微博SSO不會在onActivityResult方法內(nèi)被調(diào)用(騰訊微博的流程不經(jīng)過onActivityResult方法)
7.7 分享到Facebook注意一定要添加7.1的onActivityResult. 在集成facebook之前需要到facebook開發(fā)者官網(wǎng)注冊你的應(yīng)用,并且填寫應(yīng)用的相關(guān)信息,否則不能分享成功. 確保在manifest中添加相關(guān)的activity以及app id, 參考上文中的manifest.如果需要其他用戶參與測試,則需要在facebook開發(fā)者官網(wǎng)添加測試賬號。 1.添加Facebook所依賴的jar文件1.1 解壓已下載的SDK.zip文件,將facebook目錄中的SocialSDK_facebook_1.jar,SocialSDK_facebook_2.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中. 1.2 在facebook/libs目錄中找到SocialSDK_facebook_1.jar,SocialSDK_facebook_2.jar文件,鼠標(biāo)右鍵-->Add to Build Path. 2.將facebook中res目錄下的資源文件添加到工程對應(yīng)的文件夾下面3.在集成代碼中添加如下代碼// 添加facebook支持, 參數(shù)1為當(dāng)前activity
// 設(shè)置facebook為大圖分享,如果不設(shè)置則默認(rèn)為圖文分享
UMFacebookHandler mFacebookHandler = new UMFacebookHandler(getActivity(), PostType.PHOTO);
mFacebookHandler.addToSocialSDK();
為了穩(wěn)定性,建議開發(fā)者在Activity的onResume, onStop, onSaveInstanceState方法中調(diào)用mFacebookHandler對應(yīng)的方法. 7.8 分享到易信和易信朋友圈1.添加易信和易信朋友圈所依賴的jar文件1.1 解壓已下載的SDK.zip文件,將yixin目錄中的SocialSDK_yixin_1.jar,SocialSDK_yixin_2.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中. 1.2 在yixin/libs目錄中找到SocialSDK_yixin_1.jar,SocialSDK_yixin_2.jar文件,鼠標(biāo)右鍵-->Add to Build Path. 2.將yixin中res目錄下的資源文件添加到工程對應(yīng)的文件夾下面3.在集成代碼中添加如下代碼 // 添加易信平臺,參數(shù)1為當(dāng)前activity, 參數(shù)2為在易信開放平臺申請到的app id
UMYXHandler yixinHandler = new UMYXHandler(getActivity(),
"yxc0614e80c9304c11b0391514d09f13bf");
yixinHandler.addToSocialSDK();
// 易信朋友圈平臺,參數(shù)1為當(dāng)前activity, 參數(shù)2為在易信開放平臺申請到的app id, 參數(shù)3為是否為易信朋友圈
UMYXHandler yxCircleHandler = new UMYXHandler(getActivity(),
"yxc0614e80c9304c11b0391514d09f13bf", true);
yxCircleHandler.addToSocialSDK();
7.9 來往和來往動態(tài)集成配置1. 添加來往所依賴的jar文件1.1 解壓已下載的SocialSDK.zip文件,將laiwang目錄下的SocialSDK_laiwang_1.jar,SocialSDK_laiwang_2.jar拷貝到工程的libs(如果沒有此目錄,新建libs目錄)目錄中. 1.2 在laiwang/libs目錄中找到SocialSDK_laiwang_1.jar,SocialSDK_laiwang_2.jar文件,鼠標(biāo)右鍵-->Add to Build Path. 2.將laiwang中res目錄下的資源文件添加到工程對應(yīng)的文件夾下面3. 在集成代碼中添加如下代碼//消息跳轉(zhuǎn)的url
String targetUrl = "http://www./social";
//添加來往
//laiwangd497e70d4:來往appToken,d497e70d4c3e4efeab:來往secretID
UMLWHandler umlwDynamicHandler = UMLWService.supportLWPlatform(getActivity(),
"laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e",targetUrl);
//設(shè)置title
umlwDynamicHandler.setTitle("友盟社會化分享組件-來往動態(tài)");
//設(shè)置消息來源
umlwDynamicHandler.setMessageFrom("友盟分享組件");
//添加來往動態(tài)
UMLWHandler umlwHandler = UMLWService.supportLWDynamicPlatform(getActivity(),
"laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e",targetUrl);
umlwHandler.setTitle("友盟社會化分享組件-來往");
umlwHandler.setMessageFrom("友盟分享組件");
mController.openShare(getActivity(), false);
來往和來往動態(tài)分享支持文本,圖片,圖文,音樂,視屏分享。文本分享會默認(rèn)添加應(yīng)用的Icon作為圖片;圖片分享會默認(rèn)添加文本, 默認(rèn)文本為/res/values/umeng_socialize_strings.xml中的umeng_socialize_laiwang_default_content字段. 8 應(yīng)用信息注冊地址列表下面是Social SDK不同平臺應(yīng)用信息注冊網(wǎng)站的地址: 9 綁定友盟應(yīng)用標(biāo)識與各開放平臺獲得appkey后,為了方便您可以快速集成我們的社會化分享的服務(wù),我們會為你對各個(gè)平臺提供一個(gè)默認(rèn)的appkey和appsecret,如果你想使用自己的微博平臺的應(yīng)用,您需在在我們網(wǎng)站更改默認(rèn)的微博appkey,具體操作是:登錄友盟網(wǎng)站->左上角選擇你們的產(chǎn)品->組件->社會化組件->設(shè)置,菜單項(xiàng)下進(jìn)行綁定配置。如果你尚未在我們支持的分享平臺注冊你的應(yīng)用,注冊過程可以參考如下: 新浪微博1. 在新浪開放平臺后臺創(chuàng)建移動應(yīng)用:http://open.weibo.com -> 應(yīng)用開發(fā) -> 移動應(yīng)用 -> 創(chuàng)建應(yīng)用
2. 在創(chuàng)建好新應(yīng)用后,選擇“基本信息”,安全域名填寫"sns.",其余字段按需填寫;(如果是已有應(yīng)用,可以在應(yīng)用信息->基本設(shè)置->安全域名中做修改)
3. 如果應(yīng)用尚未通過審核,則需要指定測試用戶,該階段只有指定的測試用戶才可以分享信息到新浪微博,應(yīng)用通過審核后此限制自動失效。
4. 將獲取到的Key和Secret手工填寫到友盟后臺對應(yīng)應(yīng)用的組件 -> 社會化組件 -> 設(shè)置頁 -> 新浪微博APP綁定信息部分。
騰訊微博1. 生成封裝鏈接。如果還未配置應(yīng)用地址的封裝鏈接,需要在友盟后臺對應(yīng)應(yīng)用的組件 ->社會化組件 ->設(shè)置頁 中生成封裝鏈接;
![appurl_socialurl](http://dev./images/ios/appurl_socialurl.png)
2. 在騰訊開放平臺后臺創(chuàng)建無線應(yīng)用:http://dev.t.qq.com/ -> 應(yīng)用開發(fā) -> 創(chuàng)建應(yīng)用 -> “無線應(yīng)用”;
3. 在創(chuàng)建無線應(yīng)用表單中,“應(yīng)用網(wǎng)址”需要填寫步驟1生成的應(yīng)用網(wǎng)址的封裝鏈接,其余字段按需填寫;
(如果是已有應(yīng)用,可以在基本信息 -> 應(yīng)用網(wǎng)址中填寫上述的封裝鏈接)
4. 將獲取到的Key和Secret手工填寫到友盟后臺對應(yīng)應(yīng)用的組件 -> 社會化組件 -> 設(shè)置頁 -> 騰訊微博APP綁定信息部分。
人人網(wǎng)人人網(wǎng)開放平臺(不推薦繼續(xù)使用,兩種接入方式的區(qū)別詳見,http://wiki.mobile.renren.com/zh/index.php/接入流程指南#.E5.B7.B2.E6.8E.A5.E5.85.A5.E8.BF.87.E4.BA.BA.E4.BA.BA)
1. 在如下位置創(chuàng)建應(yīng)用:http://dev.renren.com/ -> 應(yīng)用開發(fā) -> 創(chuàng)建客戶端應(yīng)用 -> 填寫應(yīng)用名稱;
2. 在已創(chuàng)建應(yīng)用的基本信息 -> 應(yīng)用根域名字段填寫為“sns.whalecloud.com”;
3. 應(yīng)用處于“開發(fā)中”狀態(tài)(未審核通過前),需要在用戶管理頁面中添加測試用戶,這些特定用戶才能分享成功。應(yīng)用通過審核后此限制自動失效。
4. 將獲取到的App ID、API Key、Secret手工填寫到友盟后臺對應(yīng)應(yīng)用的組件 -> 社會化組件 -> 設(shè)置頁 -> 人人網(wǎng)APP綁定信息部分,并勾選“開放平臺”。
豆瓣與人人網(wǎng)的申請、配置方式基本一致,開放平臺鏈接如下:http://developers.douban.com/
回調(diào)地址為:http://sns./douban/callback
權(quán)限必須選擇豆瓣廣播
QQ空間1. 在如下位置創(chuàng)建應(yīng)用:http://connect.qq.com/manage/ -> 添加移動應(yīng)用 -> 填寫應(yīng)用名稱,確定;
2. 在接下來的應(yīng)用控制臺 -> 基本信息 -> 點(diǎn)擊編輯按鈕,填寫必要的應(yīng)用信息,并保存。(不做有可能授權(quán)失敗)
3. 將獲取到的APP ID、Key手工填寫到友盟后臺對應(yīng)應(yīng)用的組件 -> 社會化組件 -> 設(shè)置頁 -> QQ空間APP綁定信息部分。
4. 按照以上配置可以滿足大部分的圖片分享需求,即指定圖片URL進(jìn)行圖片分享;如需支持上傳圖片內(nèi)容并分享,要在此頁面另行申請upload_pic權(quán)限:http://wiki.opensns.qq.com/wiki/【QQ登錄】API文檔)
10. FAQ請到友盟社會化組件的幫助與支持頁面 11. 常見錯(cuò)誤打開**com.umeng.socom.Log.LOG = true**,可在LogCat中觀察,部分錯(cuò)誤碼將在toast中顯示。 如過返回錯(cuò)誤碼不在以下表格中,請查閱相關(guān)分享平臺錯(cuò)誤碼. Social錯(cuò)誤代碼及錯(cuò)誤信息 5001 | 錯(cuò)誤的友盟appkey,或者此appkey沒有綁定任何平臺.如果開發(fā)者綁定了,依然出現(xiàn)這個(gè)問題,讓開發(fā)者再試一下,可能是剛綁定馬上就測試的原因,最好等2分鐘。 | 5002 | 這個(gè)友盟appkey已經(jīng)被禁止 | 5003 | 請求的參數(shù)中沒有uid | 5004 | 未知的錯(cuò)誤,具體的錯(cuò)誤信息會在log的輸出中 | 5005 | 訪問頻率超限,可一會兒再試 | 5006 | 請求參數(shù)中沒有content字段 | 5007 | 請求參數(shù)中content字段的內(nèi)容為空 | 5008 | 沒有上傳圖片 | 5009 | 此友盟的appkey沒有綁定對應(yīng)平臺的appkey和appsecret | 5010 | userid無效,這個(gè)用戶并沒有進(jìn)行授權(quán) | 5013 | 請求的參數(shù)中沒有appkey這個(gè)字段 | 5014 | 沒有對此用戶進(jìn)行授權(quán) | 5016 | 分享信息重復(fù) | 5017 | 分享圖片大小有問題 | 5024 | 獲取access token失敗,具體看log輸出 | 5025 | 獲取access token失敗,具體看log輸出 | 5027 | 授權(quán)已經(jīng)過期 | 5028 | 授權(quán)已經(jīng)過期 | 5015 | 請求中沒有state參數(shù) | 5016 | 發(fā)送了重復(fù)內(nèi)容的微博 | 5017 | 圖像文件大小不正確 | 5018 | appurl不正確 | 5019 | 圖像url不正確 | 5020 | 沒有使用Qzone add_share接口的權(quán)限 | 5029 | 該用戶已經(jīng)關(guān)注過了 | 5030 | 沒有使用此api的權(quán)限 | 5031 | openid錯(cuò)誤 | 5032 | 用戶不存在或者用戶無法在平臺發(fā)言 | 5033 | 請求參數(shù)非法 | 5034 | 用戶不在平臺的應(yīng)用測試列表當(dāng)中 | 5035 | 發(fā)布內(nèi)容頻率太高 | 5036 | IMEI參數(shù)錯(cuò)誤 | 5037 | 此App尚未授權(quán)過 |
500 | 給定uid的用戶并不存在 | 501 | 綁定賬戶失敗 | 502 | 解綁定失敗 | 503 | 評論失敗 | 504 | 獲取評論失敗 | 505 | 用戶被加入黑名單 | 506 | 獲取好友失敗 | 507 | 獲取授權(quán)url失敗 | 508 | 解除授權(quán)失敗 | 510 | 分享失敗 | 511 | 獲取bar失敗 | 512 | 從平臺獲取用戶信息失敗 | 513 | url跳轉(zhuǎn)失敗 | 514 | 從social獲取用戶信息失敗 | 515 | 請求的參數(shù)錯(cuò)誤 | 516 | 請求喜歡失敗 | 517 | 版本號錯(cuò)誤 |
-101 | 沒有Oauth授權(quán) | -102 | 未知錯(cuò)誤 | -103 | 服務(wù)器沒響應(yīng) | -104 | 初始化失敗 | -105 | 參數(shù)錯(cuò)誤 |
其他平臺錯(cuò)誤碼 新浪微博錯(cuò)誤碼 騰訊微博錯(cuò)誤碼 QQ和QQ空間錯(cuò)誤碼
2.混淆為了保證引用友盟Social SDK jar文件以及騰訊jar文件被混淆,請?jiān)趐roguard.cfg文件中添加以下代碼避免被混淆.。
-dontwarn com.google.android.maps.**
-dontwarn android.webkit.WebView
-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**
-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable
-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**
-keep public class javax.**
-keep public class android.webkit.**
-keep class com.tencent.open.TDialog$*
-keep class com.facebook.**
-keep class com.umeng.scrshot.**
-keep public class com.tencent.**
-keep class com.umeng.socialize.sensor.**
-keep class com.tencent.open.TDialog$* {*;}
-keep class com.tencent.open.PKDialog
-keep class com.tencent.open.PKDialog {*;}
-keep class com.tencent.open.PKDialog$*
-keep class com.tencent.open.PKDialog$* {*;}
-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}
-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}
-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
-keep public class [your_pkg].R$*{
public static final int *;
}
12 技術(shù)支持請發(fā)郵件至social-support@。如果您出現(xiàn)的問題和SDK相關(guān),請說明您使用的是Android的SDK,我們會盡快回復(fù)您。
|