Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
251 changes: 149 additions & 102 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,131 +2,178 @@

文档语言 : 中文 | [English](https://github.com/MobClub/ShareSDK-for-Android/blob/master/README_EN.md)

- ShareSDK是全球最流行的应用和手机游戏社交SDK !到目前为止,我们已经支持了10多万个客户
- ShareSDK是全球最流行的应用和手机游戏社交SDK !到目前为止,我们已经支持了几十万+的客户
ShareSDK可以轻松支持世界上40多个社交平台的第三方登录、分享和与好友列表操作。短短几个小时,这个小程序包将使您的应用程序完全社会化!
想在中国社交平台上发布你的应用吗?这可能是你最好的选择!

- website -- http://www.mob.com
- wiki -- http://wiki.mob.com/Android_%E5%BF%AB%E9%80%9F%E9%9B%86%E6%88%90%E6%8C%87%E5%8D%97
- bbs -- http://bbs.mob.com/forum-36-1.html
- wiki -- http://wiki.mob.com/%E5%AE%8C%E6%95%B4%E9%9B%86%E6%88%90%E6%96%87%E6%A1%A3%EF%BC%88gradle%EF%BC%89/
- bbs -- http://bbs.mob.com/forum.php

# 第一步:下载SDK
# 第一步:获取ShareSDK的appkey

请浏览我们的[官方网站](http://www.mob.com/)及下载最新版本的ShareSDK。提取下载文件后,你会发现以下目录结构:
请浏览我们的[官方网站](http://www.mob.com/)进行注册登录:

![directory structure](http://a1.qpic.cn/psb?/V14GftmO22fJgW/D2jYRnjuvUQiyfrGferrGKctas.joCRNNESfma6IB0M!/b/dBUAAAAAAAAA&bo=hAPIAQAAAAAFB2o!&rf=viewer_4)
具体步骤可以参考此帖子有详细步骤:http://bbs.mob.com/forum.php?mod=viewthread&tid=8212&extra=page%3D1

打开Android**目录下的**ShareSDK,你会发现**MainLibs**和**OnekeyShare**。ShareSDK存储在MainLibs目录中,OnekeyShare是开发人员通过ShareSDK快速完成共享特性的GUI工具。
# 步骤二:集成引用

# 步骤二:将ShareSDK导入项目
现在ShareSDK支持gradle集成的方式,目前可以不需要下载jar包进行配置集成,如果不想使用gradle集成,可以点击这里查看。

有两种方法可以将ShareSDK导入到您的项目中:**引用ShareSDK项目**或**将jar和资源复制到您的项目**中。如果您选择第二种方式,我们提供以下工具帮助您快速完成这些操作:

![quick integrating tool](http://a3.qpic.cn/psb?/V14GftmO22fJgW/qx8h1C30NL54RLlMd7R9BKh*yL4b37aHk3otu.*G1Sc!/b/dAsAAAAAAAAA&bo=EwOAAgAAAAAFALE!&rf=viewer_4)

执行此工具并将其产品复制到项目中。

ShareSDK鼓励您通过引用ShareSDK的项目来集成它,因为这样会简单得多。步骤如下:

(1) 将提取的SDK复制到Eclipse的工作区中

(2) 导入SDK项目:

![projects of ShareSDK](http://a3.qpic.cn/psb?/V14GftmO22fJgW/9tjZSx7IlbFqvbZB2d1Nh.Z9rEPHLjFUJGFpy89QPdU!/b/dCwAAAAAAAAA&bo=sAJMAgAAAAAFAN8!&rf=viewer_4)

选择 MainLibs 和 OnekeyShare

![select lib-projects](http://a3.qpic.cn/psb?/V14GftmO22fJgW/BwUzD2sMwuZCm8YVYRkTg9*1U6QrJsCgxxvhvTmNecE!/b/dE0AAAAAAAAA&bo=sAJOAgAAAAADANs!&rf=viewer_4)

(3) 将项目的依赖项更改为OnekeyShare(如果需要此GUI工具)或mainlib

![change dependency](http://a3.qpic.cn/psb?/V14GftmO22fJgW/WM8W63pq8nuXMARQOSW7FuvuqS3belOTaYngPE9Gn1A!/b/dE0AAAAAAAAA&bo=FgJXAgAAAAAFAGI!&rf=viewer_4)

# 第三步:添加应用程序信息

有三种方法可以将应用程序信息添加到ShareSDK中:在ShareSDK的应用程序控制台注册**,配置“assets/ShareSDK”。文件,或由ShareSDK修改。setPlatformDevInfo(String, HashMap<String, Object>)方法
下面是“assets/ShareSDK”的示例:
1、打开项目根目录的build.gradle,在buildscrip–>dependencies 模块下面添加 classpath ‘com.mob.sdk:MobSDK:+’,如下所示;
```
<ShareSDK
AppKey="add appkey you got from ShareSDK here" />

<Facebook
Id="int字段,自定义值,供开发人员识别此平台"
SortId="int字段,注册平台中的优先级"
ConsumerKey="从Facebook获得的Key"
ConsumerSecret="你从Facebook获得的密钥"
Enable="Boolean字段,false表示从注册平台中删除平台" />


所有应用程序信息都在“assets/ShareSDK”中注册。ShareSDK示例项目的xml。

# 第四步:配置AndroidManifest.xml
buildscript {
repositories {
jcenter()
}

在AndroidMenifest.xml中添加以下权限:

<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"/>
<uses-permission android:name="android.permission.GET_ACCOUNTS"/>

如果希望使用KakaoTalk共享msg,应该在launchActivity中添加intent过滤器。
<!--
If you share msg in KakaoTalk, your share-params of executeUrl should set the value "kakaoTalkTest://starActivity"
So it do, when the user to click the share-msg, then startActivity of your app's launch-activity.
When you use the lib of onekeyshare, you can use the method of
setExecuteUrl("kakaoTalkTest://starActivity") to set executeUrl.
-->
<intent-filter>
<data android:scheme="kakaoTalkTest" android:host="starActivity"/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>

ShareSDK的gui的单一Activity:

<activity
android:name="cn.sharesdk.framework.ShareSDKUIShell"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:screenOrientation="portrait"
android:windowSoftInputMode="stateHidden|adjustResize" />
dependencies {
...
classpath 'com.mob.sdk:MobSDK:+'

}
}
```
2、在使用到Mob产品的module下面的build.gradle文件里面添加引用
```
apply plugin: 'com.mob.sdk'
```

如果你集成了微信,添加这个回调Activity:
3、然后添加MobSDK方法,配置mob的key和秘钥 (与第三步是一个gradle中;注意:MobSDK方法是配置到文件根目录,与android并列,不要配置到android里面哦)

<activity
android:name=".wxapi.WXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" />
如果还没有key的,申请Mob的appkey与appsecret请点击这里查看
Onekeyshare是ShareSDK的GUI界面,如果不需要,则需要添加”gui false”,因为默认是使用gui,version字段为SDK的版本号,不设置则使用最新的版本;

如果你集成Yixin,添加这个回调Activity:
```
MobSDK {
appKey "d580ad56b4b5"
appSecret "7fcae59a62342e7e2759e9e397c82bdd"

<activity
android:name=".yxapi.YXEntryActivity"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:configChanges="keyboardHidden|orientation|screenSize"
android:exported="true"
android:screenOrientation="portrait" />
ShareSDK {}

}
```
4、maven集成方式可以在Mob产品的module下面的build.gradle文件里面配置ShareSDK各个社交平台的key信息

第五步:添加代码
注意:其中的devInfo为来自社交平台的应用信息,如果需要其他的平台配置,可以参考下面的字段说明,或者参考SampleFrash下的MobSDK.gradle中的配置
```
MobSDK {
appKey "d580ad56b4b5"
appSecret "7fcae59a62342e7e2759e9e397c82bdd"

ShareSDK {
//平台配置信息
devInfo {
SinaWeibo {
appKey "568898243"
appSecret "38a4f8204cc784f81f9f0daaf31e02e3"
callbackUri "http://www.sharesdk.cn"
shareByAppClient false
}
Wechat {
appId "wx4868b35061f87885"
appSecret "64020361b8ec4c99936c0e3999a9f249"
}
QQ {
appId "100371282"
appKey "aed9b0303e3ed1e27bae87c33761161d"
}
Facebook {
appKey "1412473428822331"
appSecret "a42f4f3f867dc947b9ed6020c2e93558"
callbackUri "https://mob.com"
}
}
}

}
```
注:如果您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但如果您设置了,请在您自己的Application类中调用:
MobSDK.init(this);

并且在Manifest清单文件中配置:tools:replace=”android:name”,如下所示:
<application
tools:replace="android:name">

5.配置字段说明

|id |数字,平台的id,可以设置为任何不重复的数字,(可选字段)|
|sortId |数字,九宫格界面平台的排序,越小越靠前,可以设置为任何不重复的数字,(可选字段)|
|appId ||文本,对应ShareSDK.xml中的AppId、ClientID、ApplicationId、ChannelID|
|appKey |文本,对应ShareSDK.xml中的AppKey、ConsumerKey、ApiKey、OAuthConsumerKey|
|appSecret |文本,对应ShareSDK.xml中的AppSecret、ConsumerSecret、SecretKey、Secret、ClientSecret、ApiSecret、ChannelSecret|
|callbackUri |文本,对应ShareSDK.xml中的RedirectUrl、RedirectUri、CallbackUrl|
|shareByAppClient |布尔值,shareByAppClient标识是否使用客户端分享|
|bypassApproval |布尔值,bypassApproval表示是否绕过审核|
|enable |布尔值,enable字段表示此平台是否启用|
|userName |文本,userName在微信小程序中使用|
|path |文本,path在微信小程序中使用|
|hostType |文本,表示服务器类型,在YouDao和Evernote中使用|
|withShareTicket |布尔值,分享微信小程序时,分享出去的小程序被二次打开时可以获取到更多信息,true为能获取,反之不能;仅在微信中使用|
|miniprogramType |数字,分享微信小程序时,表示小程序的开发状态,取值范围:0-正式,1-开发,2-体验,仅在微信中使用|

配置完以上信息后同步(sync)一下代码就可以调用相关的接口了

# 步骤三:添加代码

如果您没有在AndroidManifest中设置appliaction的类名,MobSDK会将这个设置为com.mob.MobApplication,但如果您设置了,请在您自己的Application类中调用:
MobSDK.init(this);
以初始化MobSDK。

添加配置后,即可调用授权、获取资料、分享等操作,如一键分享的代码:
```
private void showShare() {
OnekeyShare oks = new OnekeyShare();
//关闭sso授权
oks.disableSSOWhenAuthorize();

// title标题,微信、QQ和QQ空间等平台使用
oks.setTitle(getString(R.string.share));
// titleUrl QQ和QQ空间跳转链接
oks.setTitleUrl("http://sharesdk.cn");
// text是分享文本,所有平台都需要这个字段
oks.setText("我是分享文本");
// imagePath是图片的本地路径,Linked-In以外的平台都支持此参数
oks.setImagePath("/sdcard/test.jpg");//确保SDcard下面存在此张图片
// url在微信、微博,Facebook等平台中使用
oks.setUrl("http://sharesdk.cn");
// comment是我对这条分享的评论,仅在人人网使用
oks.setComment("我是测试评论文本");
// 启动分享GUI
oks.show(this);
}
}
```

在**入口activity**的**onCreate**方法中添加如下行:
# 步骤四:混淆设置
ShareSDK已经做了混淆处理,再次混淆会导致不可预期的错误,请在您的混淆脚本中添加如下的配置,跳过对ShareSDK的混淆操作:
```
-keep class cn.sharesdk.**{*;}
-keep class com.sina.**{*;}
-keep class **.R$* {*;}
-keep class **.R{*;}
-keep class com.mob.**{*;}
-keep class m.framework.**{*;}
-dontwarn cn.sharesdk.**
-dontwarn com.sina.**
-dontwarn com.mob.**
-dontwarn **.R$*
```
# 步骤五:可用的社交平台
任何配置在devInfo下的社交平台都是可用的,他们包括:

ShareSDK.initSDK(this);
|分类 |平台名称|
|常用平台 |SinaWeibo(新浪微博)、Wechat(微信好友)、WechatMoments(微信朋友圈)、QQ(QQ好友)、Facebook、FacebookMessenger|
|其它主流平台 |TencentWeibo(腾讯微博)、QZone(QQ空间)、Renren(人人网)、Twitter、Douban(豆瓣)、Tumblr、GooglePlus(Google+)、Pinterest、Line、Instagram、Alipay(支付宝好友)、AlipayMoments(支付宝朋友动态)、Youtube、Meipai(美拍)|
|其它平台 |WechatFavorite(微信收藏)、KaiXin(开心网)、Email(电子邮件)、ShortMessage(短信)、YouDao(有道云笔记)、Evernote(印象笔记)、LinkedIn(领英)、FourSquare、Flickr、Dropbox、VKontakte、Yixin(易信)、YixinMoments(易信朋友圈)、Mingdao(明道)、KakaoTalk、KakaoStory、WhatsApp、Pocket、Instapaper、Dingding(钉钉)、Telegram|


# 步骤六:注意事项
1. ShareSDK默认会添加OnekeyShare库,如果您不需要这个库,可以在ShareSDK下设置“gui false”来关闭OnekeyShare
2. MobSDK默认为ShareSDK提供最新版本的集成,如果您想锁定某个版本,可以在ShareSDK下设置“version “某个版本””来固定使用这个版本
3. 如果使用MobSDK的模块会被其它模块依赖,请确保依赖它的模块也引入MobSDK插件,或在此模块的gradle中添加:

并在**上次Activity**的**onDestroy**方法中添加如下行:

ShareSDK.stopSDK(this);
```

# 截图
![logo grid view of onekeyshare](http://a3.qpic.cn/psb?/V14GftmO22fJgW/1cUPaAxmqxnyzWXbeWEWkOVNFcxv7laksaKs*d7Aq4c!/b/dAsAAAAAAAAA&bo=UQFXAgAAAAAFACY!&rf=viewer_4)
Expand Down