小白入门 友盟分享全攻略

小白入门 友盟分享全攻略

友盟分享官方已经提供很详细的说明文档,这里主要结合官方文档,更加仔细的讲述一下友盟分享的具体过程以及一些坑。

1. 去友盟官网添加应用,获取新应用的appKey,并根据要分享的平台下载对应的友盟sdk。

2.使用友盟SDK,添加资源文件和jar包。

这里友盟提供了三种方法:

方法A 快速集成工具:使用SDKIntegration.jar 软件自动向我们的项目工程添加资源文件和jar包。

方法B 直接添加工程引用:直接将下载下来的social_sdk_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。

方法C 手动添加:添加资源到现有项目中,下面的每一步都需要再去添加jar和res资源,比较费事。

我采用的方法B,升级和使用方便,可随意更换要分享的平台。并且下面的步骤都是基于方法B的。

3. Manifest配置,添加友盟Appkey/Activity/权限

package="com.umeng.example"

android:versionCode="1"

android:versionName="1.0" >

android:debuggable="true"

android:icon="@drawable/icon"

android:label="@string/app_name"

android:theme="@android:style/Theme.Black.NoTitleBar" >

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" >

android:name="com.tencent.tauth.AuthActivity"

android:launchMode="singleTask"

android:noHistory="true" >

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:screenOrientation="portrait">

android:name="UMENG_APPKEY"

android:value="xxxxxxxxxxxxxxxxxxxxxx" >

如果选用多种UmengSDK产品使用不同Appkey,可为SocialSDK配置单独的appkey,如下:

/*代码添加Appkey,如果设置了非null值,SocialSDK将使用该值.*/

SocializeConstants.APPKEY = "xxxxxxxxx";

4. 初始化友盟sdk,弹出分享面板

初始化友盟

// 首先在您的Activity中添加如下成员变量

final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share");

// 设置分享内容

mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www.umeng.com/social");

// 设置分享图片, 参数2为图片的url地址

mController.setShareMedia(new UMImage(getActivity(),

"http://www.umeng.com/images/pic/banner_module_social.png"));

// 设置分享图片,参数2为本地图片的资源引用

//mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));

// 设置分享图片,参数2为本地图片的路径(绝对路径)

//mController.setShareMedia(new UMImage(getActivity(),

// BitmapFactory.decodeFile("/mnt/sdcard/icon.png")));

// 设置分享音乐

//UMusic uMusic = new UMusic("http://sns.whalecloud.com/test_music.mp3");

//uMusic.setAuthor("GuGu");

//uMusic.setTitle("天籁之音");

// 设置音乐缩略图

//uMusic.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");

//mController.setShareMedia(uMusic);

// 设置分享视频

//UMVideo umVideo = new UMVideo(

// "http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");

// 设置视频缩略图

//umVideo.setThumb("http://www.umeng.com/images/pic/banner_module_social.png");

//umVideo.setTitle("友盟社会化分享!");

//mController.setShareMedia(umVideo);

弹出分享面板

yourShareButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

// 是否只有已登录用户才能打开分享选择页

mController.openShare(getActivity(), false);

}

});

到这里,友盟分享算是阶段性完成,但是上面仅仅能分享到豆瓣新浪微博什么的,并且不能免登录。

5. 各平台SSO(免登录)配置

5.1 免登录回调:

如果有使用任一平台的SSO授权或者集成了facebook平台, 则必须在对应的activity中实现onActivityResult方法, 并添加如下代码

@Override

protected 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);

}

}

5.2 分享到微信和朋友圈:

5.2.1 去微信开放平台创建移动应用,填写app基本资料,然后等待审核,审核通过后会有appId和AppSecret。

5.2.2 添加集成代码

String appID = "wx967daebe835fbeac";

String appSecret = "5fa9e68ca3970e87a1f83e563c8dcbce";

// 添加微信平台

UMWXHandler wxHandler = new UMWXHandler(getActivity(),appId,appSecret);

wxHandler.addToSocialSDK();

// 添加微信朋友圈

UMWXHandler wxCircleHandler = new UMWXHandler(getActivity(),appId,appSecret);

wxCircleHandler.setToCircle(true);

wxCircleHandler.addToSocialSDK();

5.2.3 单独为微信微信添加回调

步骤一 在manifest中注册回调activity

android:name=".wxapi.WXEntryActivity"

android:theme="@android:style/Theme.Translucent.NoTitleBar"

android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true"

android:screenOrientation="portrait" />

步骤二 添加对用的WXEntryActivity代码

将SDK包中platforms/weixin目录下的wxapi文件夹拷贝到您的工程的包目录下, 然后修改WXEntryActivity的完整路径即可。

例如social_sdk_example的包名为com.umeng.soexample,因此将wxapi文件夹拷贝到com.umeng.soexample下,最终WXEntryActivity的 完整路径为com.umeng.soexample.wxapi.WXEntryActivity。

注意:

拷贝完后,会发现WXEntryActivity的类里什么代码也没有,即使这样也不要额外去添加代码。

也可随意拷贝其他位置,只要与manifest能对应即可。

注意事项

在微信开放平台填写你App的的签名,测试、发布时要保证App的签 名跟微信开放平台的签名一致。工程的包名必须同申请应用的包名一致开发者的应用需要通过审核。开发者在申请应用必须要通过微信官网 的审核才能进行调试

5.2.4 设置微信分享内容

注意事项请参考 5.3.4 QQ分享内容设置

添加集成代码

//设置微信好友分享内容

WeiXinShareContent weixinContent = new WeiXinShareContent();

//设置分享文字

weixinContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,微信");

//设置title

weixinContent.setTitle("友盟社会化分享组件-微信");

//设置分享内容跳转URL

weixinContent.setTargetUrl("你的URL链接");

//设置分享图片

weixinContent.setShareImage(localImage);

mController.setShareMedia(weixinContent);

//设置微信朋友圈分享内容

CircleShareContent circleMedia = new CircleShareContent();

circleMedia.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,朋友圈");

//设置朋友圈title

circleMedia.setTitle("友盟社会化分享组件-朋友圈");

circleMedia.setShareImage(localImage);

circleMedia.setTargetUrl("你的URL链接");

mController.setShareMedia(circleMedia);

接口说明

微信分享必须设置targetURL,需要为http链接格式微信朋友圈只能显示title,并且过长会被微信截取部分内容

5.3 分享到QQ 和 QQ空间**

5.3.1 去腾讯开放平台注册应用

按照QQ官方要求填写,获取APPID及appkey,并且将APPID及appkey绑定在友盟主站后台, 同时注意在应用审核通过前必须添加测试账号,否则会出现110406报错。

关于测试帐号

测试帐号在腾讯开放平台—>管理移动应用—>点击对应的应用—>最下栏有个用户能力—>进阶社交能力—>有个应用调试者分页,即可添加测试帐号。其实已默认添加当前登录帐号为测试帐号。

5.3.2 由于第3大步 manifest配置已经添加了com.tencent.tauth.AuthActivity和AssistActivity,所以此处不需要再配置manifest。

5.3.3 添加集成代码

添加QQ在分享列表页中

//参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.

UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(getActivity(), "100424468",

"c7394704798a158208a74ab60104f0ba");

qqSsoHandler.addToSocialSDK();

添加Qzone在分享列表页中

//参数1为当前Activity, 参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.

QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(getActivity(), "100424468",

"c7394704798a158208a74ab60104f0ba");

qZoneSsoHandler.addToSocialSDK();

5.3.4 设置分享内容

注意

上面的分享,已经集成到分享列表中去了,也可以分享成功,但是点击分享的内容打开的确是友盟官网。

这是因为腾讯的QQ QZone 和 微信 还需要单独设置分享内容。上面初始化友盟sdk的代码,mController.setShareContent的步骤,对腾讯家族有限制。只对新浪和人人等其他第三方有效。

一旦调用单独对平台的设置 比如QQShareContent,则上面 mController.setShareContent等的设置会失效,比如mController已经设置了分享图片,但是QQShareContent没有设置分享图片,则实际效果会是分享的内容也没有图片。(有点坑)

String shareContent = "友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www.umeng.com/social";

String shareTargetUrl = "http://www.umeng.com/social";

UMImage shareImage = new UMImage(mContext, R.drawable.icon);

String qqAppId = "1104819457";

String qqAppKey = "mx1qogjc6jrawa33";

//QQ分享和空间分享还需要设置QQShareContent和QZoneShareContent,否则点击分享内容会跳到友盟官网。

// QQ content

QQShareContent qqShareContent = new QQShareContent();

qqShareContent.setShareContent(shareContent);

qqShareContent.setTitle("hello, title"); //不加的话,title默认为“分享到QQ”

qqShareContent.setShareImage(shareImage);

qqShareContent.setTargetUrl(shareTargetUrl);

mController.setShareMedia(qqShareContent);

// QZone content

// FIXME:一旦调用mController.setShareMedia(qzone)方法,则mController之前的设置在qzone中都不会生效,必须在QZoneShareContent重新设置。QQ也一样。

QZoneShareContent qzone = new QZoneShareContent();

qzone.setShareContent("简易短信转发App,两个手机一个搞定!http://fir.im/smsTransmit");

qzone.setTargetUrl(shareTargetUrl);

qzone.setTitle("QZone title");

//qzone.setShareImage(urlImage); //尽管mController设置图片,若此处不设置图片,则分享时没有图片

mController.setShareMedia(qzone);

5.4 分享到新浪微博

5.4.1 去新浪微博开放平台注册应用,在应用信息–基本信息页中将安全域名填写为sns.whalecloud.com ,并且还需要在友盟的官网的组件–社会化分享–自定义设置–新浪 绑定app的相关属性。

5.4.2 添加SSO集成代码

//设置新浪SSO handler

mController.getConfig().setSsoHandler(new SinaSsoHandler());

5.4.3 添加SSO回调

与其他平台一致,都采用5.1 免登录回调的方式。

5.4.4 设置分享内容

内容设置与sdk初始化方法一样

// 设置分享内容

mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www.umeng.com/social");

// 设置分享图片,参数2为本地图片的资源引用

mController.setShareMedia(new UMImage(getActivity(), R.drawable.icon));

注意

新浪微博、腾讯微博及豆瓣的跳转链接只能设置在分享文字之中,以http形式传递即可,人人网可以通过setAppWebSite方法单独设置跳转链接也可以像腾讯那样,通过SinaShareContent单独设置分享内容

其他分平台设置内容形式有

平台内容类型新浪微博SinaShareContent腾讯微博TencentWbShareContent人人网RenrenShareContent豆瓣DoubanShareContentTwitterTwitterShareContentG+GooglePlusShareContent

6. 下面是我初始化友盟的Demo

String shareContent = "友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www.umeng.com/social";

String shareTargetUrl = "http://www.umeng.com/social";

UMImage shareImage = new UMImage(mContext, R.drawable.icon);

// 设置分享内容

mController.setShareContent(shareContent);

// 设置分享图片,参数2为本地图片的资源引用

mController.setShareMedia(shareImage);

// 微信和朋友圈

String wxAppID = "wx967daebe835fbeac";

String wxAppSecret = "a88ve68ca3970e1da1f83e563c8d78fg";

// 添加微信平台

UMWXHandler wxHandler = new UMWXHandler(mContext,wxAppID,wxAppSecret);

wxHandler.addToSocialSDK();

// 添加微信朋友圈

UMWXHandler wxCircleHandler = new UMWXHandler(mContext,wxAppID,wxAppSecret);

wxCircleHandler.setToCircle(true);

wxCircleHandler.addToSocialSDK();

String qqAppId = "1104819637";

String qqAppKey = "mx1qogjc6jraw7pn";

//QQ分享和空间分享还需要设置QQShareContent和QZoneShareContent,否则点击分享内容会跳到友盟官网。

// QQ content

QQShareContent qqShareContent = new QQShareContent();

qqShareContent.setShareContent(shareContent);

qqShareContent.setTitle("hello, title"); //不加的话,title默认为“分享到QQ”

qqShareContent.setShareImage(shareImage);

qqShareContent.setTargetUrl(shareTargetUrl);

mController.setShareMedia(qqShareContent);

// QZone content FIXME:一旦调用mController.setShareMedia(qzone)方法,

//则mController之前的设置在qzone中都不会生效,必须在QZoneShareContent重新设置。QQ也一样。

QZoneShareContent qzone = new QZoneShareContent();

qzone.setShareContent("简易短信转发App,两个手机一个搞定!http://fir.im/smsTransmit");

qzone.setTargetUrl(shareTargetUrl);

qzone.setTitle("QZone title");

//qzone.setShareImage(urlImage); //尽管mController设置图片,若此处不设置图片,则分享时没有图片

mController.setShareMedia(qzone);

// QQ分享 SSO

UMQQSsoHandler qqSsoHandler = new UMQQSsoHandler(this, qqAppId,

qqAppKey);

qqSsoHandler.addToSocialSDK();

// QQ空间 SSO

//参数1为当前Activity,参数2为开发者在QQ互联申请的APP ID,参数3为开发者在QQ互联申请的APP kEY.

QZoneSsoHandler qZoneSsoHandler = new QZoneSsoHandler(this, qqAppId,

qqAppKey);

qZoneSsoHandler.addToSocialSDK();

// SINA

//设置新浪SSO handler

mController.getConfig().setSsoHandler(new SinaSsoHandler());

相关科技文章

【問題】請問任務是多久更新一次 @覓長生 哈啦板
正规365彩票平台app下载

【問題】請問任務是多久更新一次 @覓長生 哈啦板

⌚ 07-20 👁️ 5517
华为荣耀pra-al00是什么型号
365bet体育在线导航

华为荣耀pra-al00是什么型号

⌚ 07-23 👁️ 9490
zip文件加密的几种破解方法
正规365彩票平台app下载

zip文件加密的几种破解方法

⌚ 07-21 👁️ 1080
[天下足球]2014年世界足坛十大巅峰对决
365bet体育在线导航

[天下足球]2014年世界足坛十大巅峰对决

⌚ 07-05 👁️ 8837
常规海报尺寸(常规海报尺寸是多少毫米)
365bet体育在线导航

常规海报尺寸(常规海报尺寸是多少毫米)

⌚ 06-29 👁️ 6671
5月28日是什么星座
正规365彩票平台app下载

5月28日是什么星座

⌚ 07-23 👁️ 764

合作伙伴