本文介紹快速接入社交分享 SDK 的操作步驟。
關於此任務
社交分享組件提供微博、微信、支付寶、QQ、DingTalk、簡訊等渠道的分享功能,提供給開發人員統一的介面,無需處理各 SDK 的介面差異性。要將分享組件接入 Android 用戶端,您需要配置工程確定基礎架構,並添加 share 組件的 SDK。
前置條件
在接入各渠道之前,必須在分享渠道的官方網站申請帳號。例如以下分享渠道的官方網站:
社交分享支援 原生 AAR 接入 和 組件化接入 兩種接入方式。
若採用原生 AAR 方式接入,需先完成 將 mPaaS 添加到您的專案中 的前提條件和後續相關步驟。
若採用組件化方式接入,需先完成 組件化接入流程。
添加 SDK
原生 AAR 方式
參考 AAR 組件管理,通過 組件管理(AAR) 在工程中安裝 分享 組件。
組件化方式
在 Portal 和 Bundle 工程中通過 組件管理 安裝 分享 組件。更多資訊,參考 管理組件依賴。
初始化 mPaaS
如果使用原生 AAR 方式,需要初始化 mPaaS。請在 Application 中添加以下代碼:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
// mPaaS 初始化
MP.init(this);
}
}詳情請參考:初始化 mPaaS。
各個平台分享 SDK 使用
本文將結合 社交分享 官方 Demo 介紹如何在 10.1.32 及以上版本的基準中使用社交分享 SDK。
微信分享
您需要手動產生一個特定路徑和名稱的 Activity 用來接收微信分享的回調事件。這個 Activity 繼承自 DefaultWXEntryActivity,路徑為 package_name.wxapi.WXEntryActivity。其中,package_name 為應用的包名。
路徑和 Activity 名稱必須準確,否則將無法收到回調。
查看以下樣本,其中包名為 com.mpaas.demo:
package com.mpaas.demo.wxapi;
import com.alipay.android.shareassist.DefaultWXEntryActivity;
public class WXEntryActivity extends DefaultWXEntryActivity {
}在 AndroidManifest.xml 中對該 Activity 進行註冊:
<application>
···
<activity android:name="com.mpaas.demo.wxapi.WXEntryActivity"
android:exported="true"
android:launchMode="singleTop">
</activity>
···
</application>設定分享表徵圖時,確保表徵圖的大小不超過 32 KB,否則可能會引起微信分享失敗。目前在 Android 端 SDK 做了校正,表徵圖大小超過 32 KB 時會用預設的支付寶表徵圖代替。
QQ、QZone 分享
您需要在 AndroidManifest.xml 中,對 QQ 分享所需要的 Activity 進行註冊,否則無法正常使用 QQ、QZone 的分享和回調功能。
若您在
AndroidManifest.xml中填寫的 QQ 分享 ID 和在代碼中註冊的 QQ 分享 ID 不一致時,會導致 QQ 分享回調錯亂的異常,即使分享成功也會回調onException,請務必仔細檢查。在
data android:scheme中要填寫對應的 QQ 分享 ID,格式為tencent+QQID(+ 號請忽略)。該 ID 需要開發人員到 騰訊開放平台 中申請。查看以下樣本,其中 QQ ID 為 1104122330。
<application>
···
<activity
android:name="com.tencent.connect.common.AssistActivity"
android:configChanges="orientation|keyboardHidden|screenSize"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.Translucent.NoTitleBar"/>
<activity
android:name="com.tencent.tauth.AuthActivity"
android:launchMode="singleTask"
android:exported="true"
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="tencent1104122330"/>
</intent-filter>
</activity>
···
</application>微博分享
需要確保應用簽名、包名、分享 ID 和在 微博開放平台 中註冊的一致,否則將導致分享失敗。由此原因導致分享失敗時,share 組件的分享回調不會觸發分享異常 onException,而會觸發分享成功 onComplete。該缺陷屬於微博 SDK 缺陷,目前在微博 SDK 官方 Demo 中同樣會出現此問題。