前言
第三方分享在日常開發(fā)中已經(jīng)是見怪不怪了,為了方便快捷,大多數(shù)情況下我們都會(huì)使用第三方平臺(tái)提供的分享功能腿箩,來集成第三方分享挣磨,這里我將帶大家使用友盟完成第三方分享雇逞,這可能是迄今為止最人性的教程荤懂,相信我,這比繁瑣的官網(wǎng)要簡單的多塘砸。如果你只是想練習(xí)一下demo而非實(shí)戰(zhàn)节仿,我建議可以去友盟官網(wǎng)下載demo查看學(xué)習(xí)。
集成順序及步驟
為了更加清晰明了掉蔬,我會(huì)將教程分為三個(gè)集成環(huán)節(jié)
- 第三方開發(fā)者平臺(tái)申請(qǐng)
- 友盟申請(qǐng)
- 集成友盟分享
第三方開發(fā)者平臺(tái)申請(qǐng)
這一環(huán)節(jié)主要是申請(qǐng)各自分享平臺(tái)的AppKey或AppId及AppSecret廊宪,
這里提供主流分享的三方開發(fā)者平臺(tái),大家可以根據(jù)自己情況自行申請(qǐng)女轿,當(dāng)然我相信箭启,現(xiàn)在大多數(shù)已經(jīng)只分享 QQ 微信 微博了。其他平臺(tái)大家可自行搜索谈喳,就讓我偷個(gè)小懶册烈。
- 微信開放平臺(tái) https://open.weixin.qq.com/
- QQ開放平臺(tái) https://connect.qq.com/index.html
- 新浪微博開放平臺(tái) http://open.weibo.com/
友盟申請(qǐng)
登錄到友盟官網(wǎng),https://www.umeng.com/
創(chuàng)建友盟賬號(hào)婿禽,登錄后創(chuàng)建新應(yīng)用赏僧,得到新應(yīng)用的AppKey,這里需要注意的是扭倾,如果公司有安卓版和IOS版淀零,需要申請(qǐng)兩個(gè)新應(yīng)用,不同平臺(tái)的應(yīng)用禁止使用相同的Appkey膛壹,如果在創(chuàng)建時(shí)提示應(yīng)用名稱已存在驾中,不用擔(dān)心,后臺(tái)的應(yīng)用名與實(shí)際應(yīng)用名和包名無關(guān)模聋,也就是這里隨便取都可以肩民,建議命名為應(yīng)用名+平臺(tái)(iOS/Android),這樣好區(qū)分嘛链方。
集成友盟分享
短短篇幅我們就來到文章最重要的地方持痰,這里我會(huì)非常詳細(xì)的介紹如何集成和分享,當(dāng)然所有的前提是祟蚀,你已經(jīng)得到了需要分享的平臺(tái)的AppKey或AppId及AppSecret和友盟的AppKey
第一步:集成jar包和添加相應(yīng)的布局文件和圖片資源
在 https://developer.umeng.com/sdk 中工窍,我們勾選 社會(huì)化分享 SDK
然后點(diǎn)擊右邊的設(shè)置
在這里我們勾選我們需要分享的平臺(tái)粉私,這里實(shí)戰(zhàn)演練為新浪短蜕,QQ,微信捏萍,這也是友盟默認(rèn)為我們勾選的罢维,關(guān)于完整版與精簡版淹仑,大家點(diǎn)擊旁邊的問號(hào)就能查看區(qū)別所在,這里就不多闡述了。
確定后匀借,我們點(diǎn)擊下載取试,得到壓縮包,解壓后是這樣子的:
我們需要將common和share下的所有jar包復(fù)制出來(記住是所有的)怀吻,thirdparties可以不用管,放到項(xiàng)目的libs下初婆,如項(xiàng)目圖所示:
接下來將share下所有的xml文件放到項(xiàng)目的layout包中蓬坡,將所有圖片資源放到drawable包中,很重要哈磅叛,如果沒有添加屑咳,使用友盟默認(rèn)的彈窗樣式和圖片就會(huì)報(bào)錯(cuò)!1浊佟兆龙!
第二步:在注冊(cè)清單添加權(quán)限及相應(yīng)的代碼
<!--友盟分享-->
<!--新浪-->
<activity
android:name="com.umeng.socialize.media.WBShareCallBackActivity"
android:configChanges="keyboardHidden|orientation"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="false"
>
</activity>
<activity android:name="com.sina.weibo.sdk.web.WeiboSdkWebActivity"
android:configChanges="keyboardHidden|orientation"
android:exported="false"
android:windowSoftInputMode="adjustResize"
>
</activity>
<activity
android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen"
android:launchMode="singleTask"
android:name="com.sina.weibo.sdk.share.WbShareTransActivity">
<intent-filter>
<action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
<!--微信-->
<activity
android:name=".wxapi.WXEntryActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:theme="@android:style/Theme.Translucent.NoTitleBar" />
<!--QQ-->
<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" />
//例如appid為123456789,那這里填寫tencent123456789
<data android:scheme="tencent填寫自己申請(qǐng)的appid" />
</intent-filter>
</activity>
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="orientation|keyboardHidden|screenSize"/>
<!--友盟分享end-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
第三步:初始化代碼配置
在Application中敲董,初始化
UMConfigure.init(this, "友盟的Appkey", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
//微信
PlatformConfig.setWeixin("Appkey","AppSecret");
//新浪微博(第三個(gè)參數(shù)為回調(diào)地址)
PlatformConfig.setSinaWeibo("Appkey", "AppSecret","http://sns.whalecloud.com/sina2/callback");
//QQ
PlatformConfig.setQQZone("AppId", "AppSecret");
第四步:在需要使用分享的地方重寫onActivityResult
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data);
}
第五步:分享代碼
關(guān)于分享紫皇,我覺得在這里闡述還是比較累贅,本文主要介紹集成過程腋寨,如果你已經(jīng)到了這一步聪铺,那么恭喜你,你只需要完成最后一步即可實(shí)現(xiàn)分享萄窜,關(guān)于分享直接在官網(wǎng)教程更加明白簡單铃剔。
https://developer.umeng.com/docs/66632/detail/66639#h2-u5206u4EAB12
問題
集成完分享后,可能出現(xiàn)的問題查刻,最簡單的方式:
//強(qiáng)烈建議大家在Application中開啟友盟日志輸出键兜,在出錯(cuò)的地方會(huì)在日志中提示并提供解決辦法
UMConfigure.setLogEnabled(true);
這里提一個(gè)一般大家很容易出現(xiàn)的bug:
點(diǎn)擊微信分享閃爍或閃退?穗泵?普气?
首先檢查你的app的簽名是否與開發(fā)者平臺(tái)上的簽名一致,如果一致火欧,需要清理微信緩存棋电,怎么清理呢?
進(jìn)入手機(jī)設(shè)置-應(yīng)用苇侵,找到微信赶盔,點(diǎn)擊清理緩存即可。清理完成后榆浓,再打開app點(diǎn)擊微信分享試一試于未。
如果你有其他問題,可以評(píng)論,我會(huì)在第一時(shí)間回復(fù)烘浦。