Android應用開發-小巫CSDN部落格用戶端之內建友盟社會化分享元件
上一篇部落格給大家介紹了如何分析網頁并且使用jsoup這個庫對html代碼進行解析,本篇部落格繼續給大家介紹如何內建友盟社會化元件,如何使用SDK提供的API輕松實作多平台的社會化分享,官網的文檔和Demo看起來很頭疼的有木有,小巫在內建這個社會化的元件也有點煩躁,是以也需要各位耐心看下面的博文把友盟社會化元件內建到你的應用中去。為什麼要選擇友盟呢,這裡也是答應了小喵的,要幫忙內建他們的服務,是以也順帶幫他們寫一篇這樣的博文,千萬不要感動啊。 先來介紹一下:友盟社會化元件的産品特點:
主流OS
iOS、Android、Windows Phone、PhoneGap
遊戲引擎
Cocos2d-x、Unity
主流社交平台
微信、QQ、新浪微網誌、騰訊微網誌、來往、易信、人人網、豆瓣,Facebook、Twitter、 Instagram、Google+、短信、郵件
- 內建4個社交子產品(登入-分享-評論-Like),可分别調用,靈活定制;
- 授權登入的同時,可勾選關注官方微網誌;
- 分享:支援圖檔、文字、gif動圖、音頻、視訊;
- 登入:支援新浪微網誌SSO,後續支援更多平台SSO;
- 支援@好友、地理位置簽到、表情;
- 新鮮事文本支援@APP官方微網誌;
- 支援橫屏、豎屏、HD版;
友盟社會化行為分析
針對自建社交子產品的移動應用提供的社會化統計分析SDK,可實時了解SNS、使用者、資訊流、轉化率、傳播效應等資料。
提供四個次元: 概況、使用者、行為、主題(内容)的趨勢資訊;
時間區間:24小時時段、日、周、月、年,未來可支援自定義;
提供總體的[使用者分布](包括性别、年齡、學曆、地域、職業、特征、愛好等)及詳細的[使用者清單]資訊,精準至個體,并支援定向篩選;
貢獻值排名:根據操作行為的權重排序,掌握最核心的使用者;
監測帶有話題或關鍵字的活動在社交平台的傳播效應,覆寫Web與Mobile;
先來給大夥看一下內建效果:
下面是詳細的內建過程:
首先來到官網:http://www.umeng.com/
選擇社會化分享,進入檢視這個産品的介紹,下載下傳對應平台的SDK,筆者這裡自然是選擇Android平台:
筆者內建友盟社會化元件的時候還未更新到4.1,是以使用的4.0版的,點選下載下傳就可以選擇你想要內建分享的平台,還有你想要的文檔或者Demo:
這些操作都可以自行到官網進行檢視,筆者就不再浪費口舌。
下載下傳完後,解壓縮可以看到以下目錄和檔案:
platforms目錄下對應了不同的平台的所需要的資源和jar包:
然後選擇你想要內建的平台,複制的res和libs到你的目标項目中去:
這個操作做完之後,在AndroidManifest.xml中增加必要的配置:
<!-- ************************* 分享相關的注冊 START **************************** -->
<!-- 分享内容編輯頁 -->
<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>
<!-- 騰訊SSO授權的Activity注冊 -->
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:noHistory="true" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="tencent100424468" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 微信回調activity -->
<activity
android:name="com.xiaowu.blogclient.umeng.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 易信回調activity -->
<activity
android:name=".yxapi.YXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- 人人SSO授權所需的OAuthActivity -->
<activity
android:name="com.renn.rennsdk.oauth.OAuthActivity"
android:configChanges="orientation|navigation|keyboardHidden" />
<!-- facebook相關 -->
<activity android:name=".activity.FacebookActivity" >
</activity>
<activity
android:name="com.facebook.LoginActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!-- ************************* 分享相關的注冊 END **************************** -->
然後在代碼中進行如下的初始化操作,小巫已經把各個平台的使用寫在以下方法:
/**
* @功能描述 : 初始化與SDK相關的成員變量
*/
private void initConfig() {
mContext = getActivity();
mController = UMServiceFactory.getUMSocialService(DESCRIPTOR);
// 要分享的文字内容
mShareContent = "小巫CSDN部落格用戶端,CSDN移動開發專家——IT_xiao小巫的專屬用戶端,你值得擁有。";
mController.setShareContent(mShareContent);
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.xiaowu);
mUMImgBitmap = new UMImage(mContext, bitmap);
mController.setShareImage(mUMImgBitmap);
mController.setAppWebSite(""); // 設定應用位址
// 添加新浪和qq空間的SSO授權支援
mController.getConfig().setSsoHandler(new SinaSsoHandler());
// 添加騰訊微網誌SSO支援
mController.getConfig().setSsoHandler(new TencentWBSsoHandler());
// wx967daebe835fbeac是你在微信開發平台注冊應用的AppID, 這裡需要替換成你注冊的AppID
String appID = "wx880cb2b22509cf25";
// 添加微信平台
UMWXHandler wxHandler = new UMWXHandler(getActivity(), appID);
wxHandler.addToSocialSDK();
// 支援微信朋友圈
UMWXHandler wxCircleHandler = new UMWXHandler(getActivity(), appID);
wxCircleHandler.setToCircle(true);
wxCircleHandler.addToSocialSDK();
// 設定微信好友分享内容
WeiXinShareContent weixinContent = new WeiXinShareContent();
// 設定分享文字
weixinContent.setShareContent(mShareContent);
// 設定title
weixinContent.setTitle("小巫CSDN部落格用戶端");
// 設定分享内容跳轉URL
weixinContent.setTargetUrl("你的http://blog.csdn.net/wwj_748連結");
// 設定分享圖檔
weixinContent.setShareImage(mUMImgBitmap);
mController.setShareMedia(weixinContent);
// 設定微信朋友圈分享内容
CircleShareContent circleMedia = new CircleShareContent();
circleMedia.setShareContent(mShareContent);
// 設定朋友圈title
circleMedia.setTitle("小巫CSDN部落格用戶端");
circleMedia.setShareImage(mUMImgBitmap);
circleMedia.setTargetUrl("你的http://blog.csdn.net/wwj_748連結");
mController.setShareMedia(circleMedia);
// 參數1為目前Activity,參數2為開發者在QQ互聯申請的APP ID,參數3為開發者在QQ互聯申請的APP kEY.
UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(getActivity(),
"1102369913", "62ru775qbkentOUp");
qqSsoHandler.addToSocialSDK();
// 參數1為目前Activity,參數2為開發者在QQ互聯申請的APP ID,參數3為開發者在QQ互聯申請的APP kEY.
QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(getActivity(),
"1102369913", "62ru775qbkentOUp");
qZoneSsoHandler.addToSocialSDK();
// 添加人人網SSO授權功能
// APPID:201874
// API Key:28401c0964f04a72a14c812d6132fcef
// Secret:3bf66e42db1e4fa9829b955cc300b737
RenrenSsoHandler renrenSsoHandler = new RenrenSsoHandler(getActivity(),
"271529", "682c45dbdeba4b608922fef124223efb",
"2c7c3b63f58b4bfcad3665b49e65d47f");
mController.getConfig().setSsoHandler(renrenSsoHandler);
// 添加短信
SmsHandler smsHandler = new SmsHandler();
smsHandler.addToSocialSDK();
// 添加email
EmailHandler emailHandler = new EmailHandler();
emailHandler.addToSocialSDK();
QQShareContent qqShareContent = new QQShareContent();
qqShareContent.setShareContent(mShareContent);
qqShareContent.setTitle("小巫CSDN部落格");
qqShareContent.setShareImage(mUMImgBitmap);
qqShareContent.setTargetUrl("http://blog.csdn.net/wwj_748");
mController.setShareMedia(qqShareContent);
QZoneShareContent qzone = new QZoneShareContent();
// 設定分享文字
qzone.setShareContent(mShareContent);
// 設定點選消息的跳轉URL
qzone.setTargetUrl("http://blog.csdn.net/wwj_748");
// 設定分享内容的标題
qzone.setTitle("小巫CSDN部落格");
// 設定分享圖檔
qzone.setShareImage(mUMImgBitmap);
mController.setShareMedia(qzone);
}
通過openShare()方法打開分享盤:
/**
* 打開分享盤
*/
private void openShareBoard() {
mController.openShare(getActivity(), false);
}
如果使用了SSO授權,有以下代碼:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/** 使用SSO授權必須添加如下代碼 */
UMSsoHandler ssoHandler = mController.getConfig().getSsoHandler(
requestCode);
if (ssoHandler != null) {
ssoHandler.authorizeCallBack(requestCode, resultCode, data);
}
}
這個基本上就是友盟社會化元件的使用方法,具體每個平台涉及到appkey或者appScrent可以到具體平台建立應用擷取: 新浪微網誌 http://open.weibo.com
騰訊微網誌 http://dev.t.qq.com
QQ空間 http://connect.qq.com/intro/login/
微信好友 http://open.weixin.qq.com
Facebook https://developers.facebook.com
Twitter https://dev.twitter.com
人人網 http://dev.renren.com
開心網 http://open.kaixin001.com
搜狐微網誌 http://open.t.sohu.com
網易微網誌 http://open.t.163.com
豆瓣 http://developers.douban.com
有道雲筆記 http://note.youdao.com/open/developguide.html#app
印象筆記 https://dev.evernote.com/
Linkedin https://www.linkedin.com/secure/developer?newapp=
FourSquare https://developer.foursquare.com/
搜狐随身看 https://open.sohu.com/
Flickr http://www.flickr.com/services/
Pinterest http://developers.pinterest.com/
Tumblr http://www.tumblr.com/developers
Dropbox https://www.dropbox.com/developers
Instagram http://instagram.com/developer#
VKontakte http://vk.com/dev
如果上面有介紹的有遺漏的地方或者不明白的地方,大家可以給小巫留言,小巫會及時補上。 另外小巫CSDN部落格用戶端也內建了友盟更新元件,并且已經寫過一篇評測報告,大家可以到以下位址檢視: http://www.devstore.cn/evaluation/testInfo/113-177.html
下篇部落格預告:有米廣告子產品的內建