分享

友盟开发者中心-友盟统计android集成

 CevenCheng 2014-01-13



1 产品概述 

友盟社会化组件,可以让移动应用快速具备社会化分享、登录、评论、喜欢等功能,并提供实时、全面的社会化数据统计分析服务。

指南将会手把手教你使用社会化组件SDK,用5分钟为APP增加新浪微博、腾讯微博、人人网分享功能。

注意:本文示例代码均针对最新版SDK,如果你所用SDK的类名或方法名与此文不符合,请使用你所用SDK的随包文档、或者下载使用最新版SDK。

2 获取友盟Appkey 

如果你之前已经在友盟注册了应用,并获取到了Appkey,可以继续使用它.

如果你尚未在友盟注册开发者账号,需要先注册,注册之后登录你的账号,点击**添加新应用**,填写完应用基本信息后,将进入"下载SDK并添加代码"页面,此页面即可得到Appkey

3 下载并安装SDK 

3.1 下载SDK最新版

3.2 添加代码和资源引用

jar文件对应列表

平台jar文件
腾讯微博SocialSDK_TencentWB_1.jar,SocialSDK_TencentWB_2.jar
QQ空间SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar
微信好友SocialSDK_WeiXin.jar
QQSocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar
FacebookSocialSDK_facebook_1.jar,SocialSDK_facebook_2.jar
易信SocialSDK_yixin_1.jar,SocialSDK_yixin_2.jar
来往SocialSDK_laiwang_1.jar,SocialSDK_laiwang_2.jar

注意

1:QQ跟QQ Zone SSO(免登录)引用的jar文件相同。当需要同时支持QQ跟QQ Zone的时候,只需添加一次SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件即可.
2:由于我们对微信的包名做了修改(libammsdk.jar -> SocialSDK_WeiXin.jar),如出现"Unable to execute dex: Multiple dex files define "问题,请删除libammsdk.jar或者SocialSDK_WeiXin.jar中的一个即可解决问题。

添加资源文件跟jar文件有两种方式,请根据您的需求进行选择

方法A:添加工程引用(升级方便,推荐)

解压SDK压缩包,将文件夹中的social_sdk_library_project文件夹导入Eclipse,并在您的工程中添加对此项目的引用即可。

方法B:添加资源到现有项目中

解压SDK压缩包,将文件夹中的'libs'和'res'文件夹复制到你的项目工程根目录下(如使用'ADT 17'以下用户需要手动添加'libs'下的jar文件到工程Path中):

alt text

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

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas./apk/res/android"
    package="com.umeng.example"
    android:versionCode="1"
    android:versionName="1.0" >

    <application
        android:debuggable="true"
        android:icon="@drawable/icon"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.Black.NoTitleBar" >
        <activity
            android:name=".UmengHome"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <!-- ###################注册SDK使用的Activity###################### -->
        <!--分享编辑页-->
        <activity
            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" >
        </activity>

        <!-- ############ QQ空间和QQ SSO授权的Activity注册 ############ -->
        <activity android:name="com.tencent.tauth.AuthActivity" />

        <!-- ###################添加UmengAppkey###################### -->
        <meta-data
            android:name="UMENG_APPKEY"
            android:value="xxxxxxxxxxxxxxxxxxxxxx" >
        </meta-data>

        <!-- facebook相关 -->
        <activity
            android:name="com.facebook.LoginActivity"
            android:label="@string/app_name"
            android:theme="@android:style/Theme.Translucent.NoTitleBar" />

        <!-- 这里填写你的facebook app id,必须声明在string.xml中 -->
        <meta-data
            android:name="com.facebook.sdk.ApplicationId"
            android:value="@string/facebook_app_id" />

    </application>

    <uses-sdk android:minSdkVersion="8" />

    <!-- ###################声明SDK使用的相关权限###################### -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />  <!-- 检测网络状态 -->
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />     <!-- 获取mac地址作为用户的备用唯一标识 -->
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />      <!-- 获取用户手机的IMEI,用来唯一的标识用户。 -->
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><!-- 缓存资源优先存入SDcard -->
    <uses-permission android:name="android.permission.INTERNET" />              <!-- 允许应用程序联网,以便向我们的服务器端发送数据。 -->
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />  <!-- 用于评论模块分享位置信息 -->
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /><!-- 用于评论模块分享位置信息 -->
</manifest>

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

/*代码添加Appkey,如果设置了非null值,SocialSDK将使用该值.*/
SocializeConstants.APPKEY = "xxxxxxxxx";

5 设置分享内容

5.1 设置基本分享内容

// 首先在您的Activity中添加如下成员变量
final UMSocialService mController = UMServiceFactory.getUMSocialService("com.umeng.share",
                                                                             RequestType.SOCIAL);
// 设置分享内容
mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www./social");
// 设置分享图片, 参数2为图片的url地址
mController.setShareMedia(new UMImage(getActivity(), 
                                      "http://www./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./test_music.mp3");
//uMusic.setAuthor("GuGu");
//uMusic.setTitle("天籁之音");
// 设置音乐缩略图
//uMusic.setThumb("http://www./images/pic/banner_module_social.png");
//mController.setShareMedia(uMusic);

// 设置分享视频
//UMVideo umVedio = new UMVideo(
//          "http://v.youku.com/v_show/id_XNTE5ODAwMDM2.html?f=19001023");
// 设置视频缩略图
//umVedio.setThumb("http://www./images/pic/banner_module_social.png");
//umVedio.setTitle("友盟社会化分享!");
//mController.setShareMedia(umVedio);

5.2 分平台设置分享内容

给不同的平台设置不同的分享内容,其中不同平台的多媒体、文字内容都可以定制化。当某个平台没有设置定制化的分享内容时, 则会使用类似5.1中设置的基本分享内容。示例代码如下 :

// 设置分享到微信的内容, 图片类型
UMImage mUMImgBitmap = new UMImage(getActivity(),
                "http://www./images/pic/banner_module_social.png");
WeiXinShareContent weixinContent = new WeiXinShareContent(mUMImgBitmap);
weixinContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,微信");
mController.setShareMedia(weixinContent);

// 设置朋友圈分享的内容
CircleShareContent circleMedia = new CircleShareContent(new UMImage(getActivity(),
                "http://www./images/pic/social/chart_1.png"));
circleMedia.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,朋友圈");
mController.setShareMedia(circleMedia);


// 视频分享,并且设置了腾讯微博平台的文字内容
UMVideo umVedio = new UMVideo(
                "http://v.youku.com/v_show/id_XNTc0ODM4OTM2.html");
umVedio.setThumb("http://www./images/pic/banner_module_social.png");
umVedio.setTitle("友盟社会化组件视频");
TencentWbShareContent tencentContent = new TencentWbShareContent(umVedio);
// 设置分享到腾讯微博的文字内容
tencentContent.setShareContent("来自友盟社会化组件(SDK)让移动应用快速整合社交分享功能,腾讯微博");
// 设置分享到腾讯微博的多媒体内容
mController.setShareMedia(tencentContent);

// ** 其他平台的分享内容.除了上文中已单独设置了分享内容的微信、朋友圈、腾讯微博平台,
// 剩下的其他平台的分享内容都为如下文字和UMImage  **
mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www./social");
// 设置分享图片,参数2为图片的url. 
mController.setShareMedia(new UMImage(getActivity(), 
                                "http://www./images/pic/banner_module_social.png"));

6 各种不同的分享接口,请根据定制需求自行选择

6.1 带平台选择面板分享

适用人群:希望10分钟集成从无到有实现分享的开发者
接口说明:调用该接口将先弹出分享平台选择页,选择相应的平台将进行授权并分享

// 设置分享平台选择面板的平台显示顺序
// mController.getConfig().setPlatformOrder(SHARE_MEDIA.WEIXIN, SHARE_MEDIA.WEIXIN_CIRCLE,
//                                         SHARE_MEDIA.QZONE,SHARE_MEDIA.QQ, SHARE_MEDIA.SINA);
// 是否只有已登录用户才能打开分享选择页
mController.openShare(getActivity(), false);

验证结果

选择分享平台面板分享编辑页

6.2 带编辑页直接分享

适用人群:较深耕细作型开发者,希望自定义分享列表,使用分享底层API,但仍使用友盟提供的分享编辑页。
接口说明:如果已经授权,则直接跳转到分享编辑页,否则将进行授权操作然后再跳转到分享编辑页.相比openShare,该接口不需要弹出分享面板。该接口支持所有平台的分享(QQ好友,微信会有选择好友的界面)

// 参数1为Context类型对象, 参数2为要分享到的目标平台, 参数3为分享操作的回调接口
mController.postShare(mContext,SHARE_MEDIA.SINA, 
        new SnsPostListener() {
                @Override
                public void onStart() {
                    Toast.makeText(mContext, "开始分享.", Toast.LENGTH_SHORT).show();
                }

                @Override
                public void onComplete(SHARE_MEDIA platform, int eCode,SocializeEntity entity) {
                     if (eCode == 200) {
                         Toast.makeText(mContext, "分享成功.", Toast.LENGTH_SHORT).show();
                     } else {
                          String eMsg = "";
                          if (eCode == -101){
                              eMsg = "没有授权";
                          }
                          Toast.makeText(mContext, "分享失败[" + eCode + "] " + 
                                             eMsg,Toast.LENGTH_SHORT).show();
                     }
              }
});

6.3 不带分享编辑页直接分享

适用人群:较深耕细作型开发者,无分享编辑页面,希望自定义分享列表,使用分享底层API。
接口说明:如果已经授权,调用该接口将直接进行分享(不弹出分享编辑页);否则将进行授权操作然后再分享.该接口支持所有平台的分享(QQ好友,微信会有选择好友的界面)

// 参数1为当前Activity对象, 参数2为要分享到的目标平台, 参数3为分享操作回调接口
mController.directShare(mContext, SHARE_MEDIA.SINA,
            new SnsPostListener() {

            @Override
            public void onStart() {
                Toast.makeText(mContext, "分享开始",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onComplete(SHARE_MEDIA platform,int eCode, SocializeEntity entity) {
                if(eCode == StatusCode.ST_CODE_SUCCESSED){
                    Toast.makeText(mContext, "分享成功",Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(mContext, "分享失败",Toast.LENGTH_SHORT).show();
                }
            }
    });

6.4 授权+直接分享

适用人群:深耕细作型开发者,希望完全自定义界面,只使用分享相关底层API实现分享。
接口说明:实现"授权+直接分享",你可以将授权接口(doOauthVerify)跟直接分享接口(directShare)结合起来使用。实现只需简单的四步:
步骤一:定义自己的分享面板 
步骤二:判断用户是否已经授权

OauthHelper.isAuthenticated(mContext,SHARE_MEDIA.SINA)

步骤三:用户授权,建议在调用前先用OauthHelper.isAuthenticated()判断用户是否已经授权,否则会重复授权

mController.doOauthVerify(mContext, SHARE_MEDIA.SINA, new UMAuthListener() {
    @Override
    public void onStart(SHARE_MEDIA platform) {
        Toast.makeText(mContext, "授权开始", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onError(SocializeException e, SHARE_MEDIA platform) {
        Toast.makeText(mContext, "授权错误", Toast.LENGTH_SHORT).show();
    }

    @Override
    public void onComplete(Bundle value, SHARE_MEDIA platform) {
        Toast.makeText(mContext, "授权完成", Toast.LENGTH_SHORT).show();
        //获取相关授权信息或者跳转到自定义的分享编辑页面
        String uid = value.getString("uid");
    }

    @Override
    public void onCancel(SHARE_MEDIA platform) {
        Toast.makeText(mContext, "授权取消", Toast.LENGTH_SHORT).show();
    }
} );

步骤四:调用直接分享API接口

//设置分享内容
mController.setShareContent("友盟社会化组件(SDK)让移动应用快速整合社交分享功能,http://www./social");
//设置分享图片
mController.setShareMedia(new UMImage(mContext, "http://www./images/pic/banner_module_social.png"));
//直接分享
mController.directShare(mContext, SHARE_MEDIA.SINA,
            new SnsPostListener() {

            @Override
            public void onStart() {
                Toast.makeText(mContext, "分享开始",Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onComplete(SHARE_MEDIA platform,int eCode, SocializeEntity entity) {
                if(eCode == StatusCode.ST_CODE_SUCCESSED){
                    Toast.makeText(mContext, "分享成功",Toast.LENGTH_SHORT).show();
                }else{
                    Toast.makeText(mContext, "分享失败",Toast.LENGTH_SHORT).show();
                }
            }
    });

注意:doOauthVerify接口目前不支持微信,微信朋友圈,Facebook,Twitter,GooglePlus,易信,易信朋友圈,来往,来往动态,针对这些平台可直接调用分享API接口进行分享.

7 各平台SSO(免登录)配置

SSO名词解释 : SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。
例如用户已经登录新浪微博客户端,使用SSO授权登录时则不需要用户手动输入用户名、密码,直接点击登录即可, 因此可成为免登录.

7.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);
    }
}

7.2 分享到微信和朋友圈

1.添加微信和朋友圈所依赖的jar文件

1.1 解压已下载的SDK.zip文件,将SocialSDK_WeiXin.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
1.2 在libs目录中找到SocialSDK_WeiXin.jar文件,鼠标右键-->Add to Build Path.

2.添加如下集成代码

// wx967daebe835fbeac是你在微信开发平台注册应用的AppID, 这里需要替换成你注册的AppID
String appID = "wx967daebe835fbeac";
// 微信图文分享必须设置一个url 
String contentUrl = "http://www./social";
// 添加微信平台,参数1为当前Activity, 参数2为用户申请的AppID, 参数3为点击分享内容跳转到的目标url
UMWXHandler wxHandler = mController.getConfig().supportWXPlatform(getActivity(),appID, contentUrl);
wxHandler.setWXTitle("友盟社会化组件还不错...");
// 支持微信朋友圈
UMWXHandler circleHandler = mController.getConfig().supportWXCirclePlatform(getActivity(),appID, contentUrl) ;
circleHandler.setCircleTitle("友盟社会化组件还不错...");

微信和朋友圈支持纯文字,纯图片(点击查看大图),图文,音乐,视频分享

微信集成相关说明

1.微信集成注意以下几点:

  • 正确填写AppID。
  • 工程的包名必须同申请应用的包名一致.
  • 开发者的应用需要通过审核。开发者在申请应用必须要通过微信官网的审核才能进行调试.

2.Demo中集成的微信无法使用

原因:Demo中使用的微信AppID绑定的签名信息和你打包时所用的签名信息不一致,导致无法响应. 解决办法有两个,您任选其一:

  • 申请一个测试Demo中AppID.(申请地址).
    填写"包名"时请使用Demo的包名"com.umeng.soexample".
    填写"签名"使用签名生成工具(签名工具)生成,签名时填写Demo的包名.
    获取微信AppID后替换Demo中的使用的AppID.
  • 使用SDK中的 debug.keystore编译运行Demo工程.(keystore使用方法).

7.3 分享给QQ好友 

注意一定要添加7.1的onActivityResult

1. 添加QQ分享所依赖的jar文件

1.1 解压已下载的SocialSDK.zip文件,SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
1.2 在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,鼠标右键-->Add to Build Path.
1.3 在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件.

2. 添加如下集成代码

//  参数1为当前Activity, 参数2为用户点击分享内容时跳转到的目标地址
mController.getConfig().supportQQPlatform(getActivity(), "http://www./social");   

注意:

QQ分享的内容为音乐,视频的时候,其形式必须为url;图片支持url形式跟本地图片。

7.4 SSO(免登录)分享到QQ空间 

注意一定要添加7.1的onActivityResult

1. 添加QQ空间所依赖的jar文件

如果已经添加了SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,则不需要再次添加.
1.1 解压已下载的SocialSDK.zip文件,SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
1.2 在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar文件,鼠标右键-->Add to Build Path.
1.3 在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件.

2. 在集成代码中添加如下代码

mController.getConfig().setSsoHandler( new QZoneSsoHandler(getActivity()) );

7.5 SSO(免登录)分享到新浪微博 

注意一定要添加7.1的onActivityResult

1.将SDK目录下的src覆盖到项目工程根目录下,确保已添加'com/sina/sso/RemoteSSO.aidl'.

2.在集成代码中添加如下代码

//设置新浪SSO handler
mController.getConfig().setSsoHandler(new SinaSsoHandler());

7.6 SSO(免登录)分享到腾讯微博

注意一定要添加7.1的onActivityResult

1. 添加腾讯微博SSO所依赖的jar文件

1.1 解压已下载的SocialSDK.zip文件,将SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
1.2 在libs目录中找到SocialSDK_tencentWB_1.jar,SocialSDK_tencentWB_2.jar文件,鼠标右键-->Add to Build Path.

2. 在集成代码中添加如下代码

//设置腾讯微博SSO handler
mController.getConfig().setSsoHandler(new TencentWBSsoHandler());

注意:

1.手机中必须安装微博客户端V3.8.1及以上的版本才支持SSO功能

2.腾讯微博的SSO没有回调。由于腾讯微博SSO没有提供回调,因此腾讯微博SSO不会在onActivityResult方法内被调用(腾讯微博的流程不经过onActivityResult方法)

7.7 分享到Facebook

注意一定要添加7.1的onActivityResult.
在集成facebook之前需要到facebook开发者官网注册你的应用,并且填写应用的相关信息,否则不能分享成功.
确保在manifest中添加相关的activity以及app id, 参考上文中的manifest.如果需要其他用户参与测试,则需要在facebook开发者官网添加测试账号。

1.添加Facebook所依赖的jar文件

1.1 解压已下载的SDK.zip文件,将facebook目录中的SocialSDK_facebook_1.jar,SocialSDK_facebook_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
1.2 在facebook/libs目录中找到SocialSDK_facebook_1.jar,SocialSDK_facebook_2.jar文件,鼠标右键-->Add to Build Path.

2.将facebook中res目录下的资源文件添加到工程对应的文件夹下面

3.在集成代码中添加如下代码

// 添加facebook支持, 参数1为当前activity
// 设置facebook为大图分享,如果不设置则默认为图文分享
UMFacebookHandler mFacebookHandler = new UMFacebookHandler(getActivity(), PostType.PHOTO);
mFacebookHandler.addToSocialSDK();

为了稳定性,建议开发者在Activity的onResume, onStop, onSaveInstanceState方法中调用mFacebookHandler对应的方法.

7.8 分享到易信和易信朋友圈

1.添加易信和易信朋友圈所依赖的jar文件

1.1 解压已下载的SDK.zip文件,将yixin目录中的SocialSDK_yixin_1.jar,SocialSDK_yixin_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
1.2 在yixin/libs目录中找到SocialSDK_yixin_1.jar,SocialSDK_yixin_2.jar文件,鼠标右键-->Add to Build Path.

2.将yixin中res目录下的资源文件添加到工程对应的文件夹下面

3.在集成代码中添加如下代码

 // 添加易信平台,参数1为当前activity, 参数2为在易信开放平台申请到的app id
UMYXHandler yixinHandler = new UMYXHandler(getActivity(),
                "yxc0614e80c9304c11b0391514d09f13bf");
yixinHandler.addToSocialSDK();

// 易信朋友圈平台,参数1为当前activity, 参数2为在易信开放平台申请到的app id, 参数3为是否为易信朋友圈
UMYXHandler yxCircleHandler = new UMYXHandler(getActivity(),
                "yxc0614e80c9304c11b0391514d09f13bf", true);
yxCircleHandler.addToSocialSDK();

7.9 来往和来往动态集成配置

1. 添加来往所依赖的jar文件

1.1 解压已下载的SocialSDK.zip文件,将laiwang目录下的SocialSDK_laiwang_1.jar,SocialSDK_laiwang_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中.
1.2 在laiwang/libs目录中找到SocialSDK_laiwang_1.jar,SocialSDK_laiwang_2.jar文件,鼠标右键-->Add to Build Path.

2.将laiwang中res目录下的资源文件添加到工程对应的文件夹下面

3. 在集成代码中添加如下代码

//消息跳转的url
String targetUrl = "http://www./social";
//添加来往
//laiwangd497e70d4:来往appToken,d497e70d4c3e4efeab:来往secretID
UMLWHandler umlwDynamicHandler = UMLWService.supportLWPlatform(getActivity(),
                "laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e",targetUrl);
//设置title
umlwDynamicHandler.setTitle("友盟社会化分享组件-来往动态");
//设置消息来源
umlwDynamicHandler.setMessageFrom("友盟分享组件");

//添加来往动态        
UMLWHandler umlwHandler = UMLWService.supportLWDynamicPlatform(getActivity(),
                "laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e",targetUrl);
umlwHandler.setTitle("友盟社会化分享组件-来往");
umlwHandler.setMessageFrom("友盟分享组件");

mController.openShare(getActivity(), false);

来往和来往动态分享支持文本,图片,图文,音乐,视屏分享。文本分享会默认添加应用的Icon作为图片;图片分享会默认添加文本, 默认文本为/res/values/umeng_socialize_strings.xml中的umeng_socialize_laiwang_default_content字段.

8 应用信息注册地址列表

下面是Social SDK不同平台应用信息注册网站的地址:

平台网址
新浪微博http://open.weibo.com
腾讯微博http://dev.t.qq.com
QQ空间http://connect.qq.com/intro/login/
微信好友http://open.weixin.qq.com
FaceBookhttps://developers.
Twitterhttps://dev.twitter.com
人人http://dev.renren.com
豆瓣http://developers.douban.com/

9 绑定友盟应用标识与各开放平台

获得appkey后,为了方便您可以快速集成我们的社会化分享的服务,我们会为你对各个平台提供一个默认的appkey和appsecret,如果你想使用自己的微博平台的应用,您需在在我们网站更改默认的微博appkey,具体操作是:登录友盟网站->左上角选择你们的产品->组件->社会化组件->设置,菜单项下进行绑定配置。如果你尚未在我们支持的分享平台注册你的应用,注册过程可以参考如下:

新浪微博

1. 在新浪开放平台后台创建移动应用:http://open.weibo.com -> 应用开发 -> 移动应用 -> 创建应用

2. 在创建好新应用后,选择“基本信息”,安全域名填写"sns.",其余字段按需填写;(如果是已有应用,可以在应用信息->基本设置->安全域名中做修改)

3. 如果应用尚未通过审核,则需要指定测试用户,该阶段只有指定的测试用户才可以分享信息到新浪微博,应用通过审核后此限制自动失效。

4. 将获取到的Key和Secret手工填写到友盟后台对应应用的组件 -> 社会化组件 -> 设置页 -> 新浪微博APP绑定信息部分。

腾讯微博

1. 生成封装链接。如果还未配置应用地址的封装链接,需要在友盟后台对应应用的组件 ->社会化组件 ->设置页 中生成封装链接;
![appurl_socialurl](http://dev./images/ios/appurl_socialurl.png)

2. 在腾讯开放平台后台创建无线应用:http://dev.t.qq.com/ -> 应用开发 -> 创建应用 -> “无线应用”;

3. 在创建无线应用表单中,“应用网址”需要填写步骤1生成的应用网址的封装链接,其余字段按需填写;

(如果是已有应用,可以在基本信息 -> 应用网址中填写上述的封装链接)

4. 将获取到的Key和Secret手工填写到友盟后台对应应用的组件 -> 社会化组件 -> 设置页 -> 腾讯微博APP绑定信息部分。

人人网

人人网开放平台(不推荐继续使用,两种接入方式的区别详见,http://wiki.mobile.renren.com/zh/index.php/接入流程指南#.E5.B7.B2.E6.8E.A5.E5.85.A5.E8.BF.87.E4.BA.BA.E4.BA.BA)

1. 在如下位置创建应用:http://dev.renren.com/ -> 应用开发 -> 创建客户端应用 -> 填写应用名称;

2. 在已创建应用的基本信息 -> 应用根域名字段填写为“sns.whalecloud.com”;

3. 应用处于“开发中”状态(未审核通过前),需要在用户管理页面中添加测试用户,这些特定用户才能分享成功。应用通过审核后此限制自动失效。

4. 将获取到的App ID、API Key、Secret手工填写到友盟后台对应应用的组件 -> 社会化组件 -> 设置页 -> 人人网APP绑定信息部分,并勾选“开放平台”。

豆瓣

与人人网的申请、配置方式基本一致,开放平台链接如下:http://developers.douban.com/

回调地址为:http://sns./douban/callback

权限必须选择豆瓣广播

QQ空间

1. 在如下位置创建应用:http://connect.qq.com/manage/ -> 添加移动应用 -> 填写应用名称,确定;

2. 在接下来的应用控制台 -> 基本信息 -> 点击编辑按钮,填写必要的应用信息,并保存。(不做有可能授权失败)

3. 将获取到的APP ID、Key手工填写到友盟后台对应应用的组件 -> 社会化组件 -> 设置页 -> QQ空间APP绑定信息部分。

4. 按照以上配置可以满足大部分的图片分享需求,即指定图片URL进行图片分享;如需支持上传图片内容并分享,要在此页面另行申请upload_pic权限:http://wiki.opensns.qq.com/wiki/【QQ登录】API文档)

10. FAQ

请到友盟社会化组件的帮助与支持页面

11. 常见错误

打开**com.umeng.socom.Log.LOG = true**,可在LogCat中观察,部分错误码将在toast中显示。

如过返回错误码不在以下表格中,请查阅相关分享平台错误码.

Social错误代码及错误信息

5001错误的友盟appkey,或者此appkey没有绑定任何平台.如果开发者绑定了,依然出现这个问题,让开发者再试一下,可能是刚绑定马上就测试的原因,最好等2分钟。
5002这个友盟appkey已经被禁止
5003请求的参数中没有uid
5004未知的错误,具体的错误信息会在log的输出中
5005访问频率超限,可一会儿再试
5006请求参数中没有content字段
5007请求参数中content字段的内容为空
5008没有上传图片
5009此友盟的appkey没有绑定对应平台的appkey和appsecret
5010userid无效,这个用户并没有进行授权
5013请求的参数中没有appkey这个字段
5014没有对此用户进行授权
5016分享信息重复
5017分享图片大小有问题
5024获取access token失败,具体看log输出
5025获取access token失败,具体看log输出
5027授权已经过期
5028授权已经过期
5015请求中没有state参数
5016发送了重复内容的微博
5017图像文件大小不正确
5018appurl不正确
5019图像url不正确
5020没有使用Qzone add_share接口的权限
5029该用户已经关注过了
5030没有使用此api的权限
5031openid错误
5032用户不存在或者用户无法在平台发言
5033请求参数非法
5034用户不在平台的应用测试列表当中
5035发布内容频率太高
5036IMEI参数错误
5037此App尚未授权过
500给定uid的用户并不存在
501绑定账户失败
502解绑定失败
503评论失败
504获取评论失败
505用户被加入黑名单
506获取好友失败
507获取授权url失败
508解除授权失败
510分享失败
511获取bar失败
512从平台获取用户信息失败
513url跳转失败
514从social获取用户信息失败
515请求的参数错误
516请求喜欢失败
517版本号错误
-101没有Oauth授权
-102未知错误
-103服务器没响应
-104初始化失败
-105参数错误

其他平台错误码

新浪微博错误码

腾讯微博错误码

QQ和QQ空间错误码

2.混淆

为了保证引用友盟Social SDK jar文件以及腾讯jar文件被混淆,请在proguard.cfg文件中添加以下代码避免被混淆.。


-dontwarn com.google.android.maps.**
-dontwarn android.webkit.WebView
-dontwarn com.umeng.**
-dontwarn com.tencent.weibo.sdk.**
-dontwarn com.facebook.**

-keep enum com.facebook.**
-keepattributes Exceptions,InnerClasses,Signature
-keepattributes *Annotation*
-keepattributes SourceFile,LineNumberTable

-keep public interface com.facebook.**
-keep public interface com.tencent.**
-keep public interface com.umeng.socialize.**
-keep public interface com.umeng.socialize.sensor.**
-keep public interface com.umeng.scrshot.**

-keep public class javax.**
-keep public class android.webkit.**
-keep class com.tencent.open.TDialog$*
-keep class com.facebook.**
-keep class com.umeng.scrshot.**
-keep public class com.tencent.**
-keep class com.umeng.socialize.sensor.**
-keep class com.tencent.open.TDialog$* {*;}

-keep class com.tencent.open.PKDialog

-keep class com.tencent.open.PKDialog {*;}

-keep class com.tencent.open.PKDialog$*

-keep class com.tencent.open.PKDialog$* {*;}

-keep class com.tencent.mm.sdk.openapi.WXMediaMessage {*;}

-keep class com.tencent.mm.sdk.openapi.** implements com.tencent.mm.sdk.openapi.WXMediaMessage$IMediaObject {*;}

-keep class im.yixin.sdk.api.YXMessage {*;}
-keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}

-keep public class [your_pkg].R$*{
    public static final int *;
}

12 技术支持

请发邮件至social-support@。如果您出现的问题和SDK相关,请说明您使用的是Android的SDK,我们会尽快回复您。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多