MobSDK { appKey "888888888888888888" appSecret "888888888888888888" ShareSDK { //平臺配置信息 devInfo { SinaWeibo { appKey "888888888888888888" appSecret "888888888888888888" callbackUri "去新浪配置的地址" } Wechat { appId "888888888888888888" appSecret "888888888888888888" } WechatMoments { appId "888888888888888888" appSecret "888888888888888888" } WechatFavorite { appId "888888888888888888" appSecret "888888888888888888" } QQ { appId "888888888888888888" appKey "888888888888888888" } QZone { appId "888888888888888888" appKey "888888888888888888" } } } } 你需要分享什麼平臺,就往裏面加就行可以了,有什麼疑問可以直接給我留言
一.集成準備
1.註冊應用申請Mob的 AppKey 和 AppSecret
2.需要申請第三方平臺的key
注:使用ShareSDK Gradle集成方式,不需要在AndroidMainfest.xml下面配置任何權限和Activity
二.集成配置
1、打開項目根目錄的build.gradle,在buildscrip–>dependencies 模塊下面添加 classpath ‘com.mob.sdk:MobSDK:2018.0319.1724’,如下所示;
buildscript {
repositories {
...
}
dependencies {
...
classpath "com.mob.sdk:MobSDK:2018.0319.1724"
}
}
2、在使用到Mob產品的module下面的build.gradle文件裏面添加引用
apply plugin: 'com.mob.sdk'
3、然後添加MobSDK方法,配置mob的key和祕鑰 (與第2步是一個gradle中;注意:MobSDK方法是配置到文件根目錄,與android並列,不要配置到android裏面哦)
MobSDK {
appKey "申請Mob的appkey"
appSecret "申請Mob的AppSecret"
ShareSDK {}
}
4、Gradle集成方式可以在Mob產品的module下面的build.gradle文件裏面配置ShareSDK各個社交平臺的key信息
MobSDK {
appKey "申請Mob的appkey"
appSecret "申請Mob的AppSecret"
ShareSDK {
//平臺配置信息
devInfo {
Wechat {
appId "wx4868b35061f87885"
appSecret "64020361b8ec4c99936c0e3999a9f249"
}
QQ {
appId "100371282"
appKey "aed9b0303e3ed1e27bae87c33761161d"
shareByAppClient true
}
Facebook {
appKey "1412473428822331"
appSecret "a42f4f3f867dc947b9ed6020c2e93558"
callbackUri "https://mob.com"
}
SinaWeibo {
appKey "568898243"
appSecret "38a4f8204cc784f81f9f0daaf31e02e3"
callbackUri "http://www.sharesdk.cn"
shareByAppClient true
}
}
}
}
其中的devInfo爲來自社交平臺的應用信息,完整的各個平臺參數請點擊這裏參考詳情; 具體字段參數說明等,點擊這裏查看詳情
三、添加代碼
根據國家法律法規要求(詳見關於中華人民共和國工業和信息化部網絡安全管理局印發《App違法違規收集使用個人信息行爲認定方法》的通知),開發者在使用MobTech提供的各SDK產品時,需向終端用戶展示MobTech的隱私服務協議,並獲取用戶的授權。
MobTech提供了隱私服務相應的接口供開發者使用。
注意:請所有開發者務必按照本文檔接入MobTech隱私服務流程,否則可能造成無法使用MobTech各SDK提供的相關服務。
MobTech隱私服務流程接入指導
MobTech隱私流程中,主要包含“隱私協議授權”與“查看MobTech隱私協議內容”,涉及到接口如下:
1、向終端用戶展示MobTech隱私協議,並回傳用戶授權結果
2、查詢MobTech隱私協議內容
隱私協議授權
展示MobTech隱私協議:開發者需要展示MobTech隱私條款,並將同意結果回傳給MobTech即可,推薦如下方式:
將MobTech隱私協議的URL嵌入app自身隱私協議描述中(推薦使用)
第一步:推薦添加隱私策略文本:爲了實現分享和推送功能,我們使用了MobTech的ShareSDK產品,此產品的隱私策略條款,可以參考:http://www.mob.com/about/policy
第二步:回傳用戶授權結果
當終端用戶對隱私協議彈框做出選擇後,無論同意還是拒絕,開發者都應及時將授權結果回傳給SDK。
接口 | 參數 |
---|---|
MobSDK.submitPolicyGrantResult(boolean granted, OperationCallback callback) | granted 是否同意隱私協議 callback 結果回調,可爲null |
示例代碼
調用位置開發者可以自己制定,只需要在使用SDK功能之前調用即可。
private void submitPrivacyGrantResult(boolean granted) {
MobSDK.submitPolicyGrantResult(granted, new OperationCallback<Void>() {
@Override
public void onComplete(Void data) {
Log.d(TAG, "隱私協議授權結果提交:成功");
}
@Override
public void onFailure(Throwable t) {
Log.d(TAG, "隱私協議授權結果提交:失敗");
}
});
}
注意:該接口必須接入,否則可能造成無法使用MobTech各SDK提供的相關服務。到此處,將結果回傳給Mob就大功告成了
其他嵌入方式可參考:其他展現方式
ShareSDK功能使用
1.分享代碼調用
添加配置後,即可調用授權、獲取資料、分享等操作,如一鍵分享的代碼:
//java
private void showShare() {
OnekeyShare oks = new OnekeyShare();
// title標題,微信、QQ和QQ空間等平臺使用
oks.setTitle(getString(R.string.share));
// titleUrl QQ和QQ空間跳轉鏈接
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,所有平臺都需要這個字段
oks.setText("我是分享文本");
// imagePath是圖片的本地路徑,確保SDcard下面存在此張圖片
oks.setImagePath("/sdcard/test.jpg");
// url在微信、Facebook等平臺中使用
oks.setUrl("http://sharesdk.cn");
// 啓動分享GUI
oks.show(this);
}
注:抖音分享登錄需要設置如下配置
抖音分享或者登錄返回之後,會默認留在抖音,需要將 callbackAct 屬性的值配置成您需要返回的界面的全路徑,即可成功返回
Douyin {
appKey "aw9ivykfjvi4hpwo"
appSecret "42b4caa6bda60bd49f05f06d0a4956e1"
callbackAct "com.mob.demo.TestActivity"
enable true
}
2.第三方登錄代碼調用
//java
Platform plat = ShareSDK.getPlatform(QQ.NAME);
//移除授權狀態和本地緩存,下次授權會重新授權
plat.removeAccount(true);
//SSO授權,傳false默認是客戶端授權
plat.SSOSetting(false);
//授權回調監聽,監聽oncomplete,onerror,oncancel三種狀態
plat.setPlatformActionListener(platformActionListener);
//抖音登錄適配安卓9.0
ShareSDK.setActivity(MainActivity.this);
//要數據不要功能,主要體現在不會重複出現授權界面
plat.showUser(null);
四、混淆設置
ShareSDK已經做了混淆處理,再次混淆會導致不可預期的錯誤,請在您的混淆腳本中添加如下的配置,跳過對ShareSDK的混淆操作:
-keep class cn.sharesdk.**{*;}
-keep class com.sina.**{*;}
-keep class com.mob.**{*;}
-keep class com.bytedance.**{*;}
-dontwarn cn.sharesdk.**
-dontwarn com.sina.**
-dontwarn com.mob.**
針對主流的andRes舉例說明:白名單設置如下
andResGuard {
whiteList = [
"R.layout.mob_authorize_*",
"R.drawable.mobcommon_authorize_*",
"R.drawable.ssdk_*",
"R.drawable.ssdk_oks_*",
"R.string.ssdk_oks_*",
"R.string.ssdk_*",
"R.style.mobcommon_*",
"R.ssdk_strings.*",
"R.string.mobdemo_authorize_*",
]
}
備註:如果混淆了assets下的文件,則ShareSDK.xml也需要過濾。
五、注意事項
-
ShareSDK默認會添加OnekeyShare庫,如果您不需要這個庫,可以在ShareSDK下設置“gui false”來關閉OnekeyShare
-
MobSDK默認爲ShareSDK提供最新版本的集成,如果您想鎖定某個版本,可以在ShareSDK下設置“version “某個版本””來固定使用這個版本
-
如果使用MobSDK的模塊會被其它模塊依賴,請確保依賴它的模塊也引入MobSDK插件,或在此模塊的gradle中添加:
repositories { jcenter() }
六. 可選權限說明
<!-- 可選權限說明-->
android.permission.READ_PHONE_STATE 讀取設備標識
android.permission.WRITE_EXTERNAL_STORAGE 用於緩存分享圖片、log日誌和設備標識,以及文件鎖的使用
android.permission.ACCESS_FINE_LOCATION
android.permission.ACCESS_COARSE_LOCATION 用於分享SDK管理後臺的區域分析功能展示
備註:去除Gradle自動加載的可選權限方法:在module模塊中的build.gradle文件中添加以下的配置
permissions {
exclude "需要去除的權限1", "需要去除的權限2"
}
比如需要去除掉“android.permission.READ_PHONE_STATE”權限,則直接添加如下配置即可,
MobSDK {
appKey "1ea..."
appSecret "3ad..."
ShareSDK { ... }
permissions {
exclude "android.permission.GET_ACCOUNTS",
}
}