友盟第三方平台操作流程

获取SDK

下载SDK操作流程

下载SDK最新版 如下图所示:

友盟第三方平台操作流程_第1张图片

 SDK组件说明

友盟第三方平台操作流程_第2张图片

根据需要,选择自己需要的平台、精简版/完整版

友盟第三方平台操作流程_第3张图片

Demo工程包含了源码及Apk文件,Apk可以直接安装,用于体验分享、登录功能

SDK文件目录介绍

  • main – 核心库

umeng_social_api.jar
umeng_social_net.jar
umeng_social_tool.jar

  • platforms – 分享平台库

QQ精简版(SocialSDK_QQ_Simplify.jar)
微信完整版(wechat-sdk-android-with-mta-1.0.2.jar SocialSDK_WeiXin_Full.jar)

新浪精简版(SocialSDK_Sina_Simplif.jar)

这里只列举QQ、微信和新浪,最终platforms文件夹内包含的文件与下载页面选择的平台有关

  • shareboard

umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加)

umeng_social_shareboard.jar

这一项属于可选项目,使用了默认分享面板UI时需要添加

  • shareview

umeng_social_shareview.jar

这一项是否出现在压缩包中与下载页面选择平台有关,勾选了新浪精简版、豆瓣、人人时会出现

  • Demo工程

social_sdk_example_as(Android studio 环境Demo)

social_sdk_example(Eclipse环境Demo)

umeng_android_socialize_demo_full.apk(完整版Demo安装包)

umeng_android_socialize_demo_simple.apk(精简版Demo安装包,QQ、微信、新浪均使用精简版)

 老用户升级说明

以下内容是针对老用户升级使用,如果是新用户,可以直接跳到工程配置文档

 4.x升级说明

如果您之前使用的是4.x版本的sdk,请删除所有的社会化分享代码,jar以及资源文件,更新现在最新版的sdk,根据快速集成文档重新集成,因为4.x版本接口与现在完全不一样,所有接口都需要重新调用

 5.x升级说明

之前使用友盟分享5.0+版本的老用户,可以直接替换对应jar和资源文件就可以了,但是注意默认下载的是新浪精简版,如果使用新浪精简版,不再需要.so文件,对应的Manifest配置,以及WBShareActivity.java。微信精简版,和qq精简版对应的jar名字不一样,需要将原有的jar删除,替换精简的jar,如果使用完整版直接替换即可。 res中的资源文件也要进行替换。 对应jar包名字对应如下:

平台 老版本 新版精简版 新版完整版
核心库 umeng_social_sdk.jar umeng_social_api.jar
umeng_social_net.jar
umeng_social_shareview.jar(可选,新浪精简版 豆瓣人人使用)
umeng_social_shareboard.jar(可选 如果没有使用分享面板可以不使用)
umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加)
同精简版
QQ mta-sdk-1.6.2.jar
open_sdk_r5509_lite.jar
SocialSDK_QQZone_3.jar
SocialSDK_QQ_Simplify.jar open_sdk_rxxxx_lite.jar
SocialSDK_QQ_Full.jar
新浪 SocialSDK_Sina.jar
weiboSDKCore_3.1.4.jar
libweibosdkcore.so
SocialSDK_Sina_Simplify.jar SocialSDK_Sina_Full.jar
weiboSDKCore_3.1.4.jar
libweibosdkcore.so
微信 SocialSDK_WeiXin_1.jar
SocialSDK_WeiXin_2.jar
SocialSDK_WeChat_Simplify.jar libammsdk.jar
SocialSDK_WeiXin_Full.jar

 6.0x版本

之前使用友盟分享6.0+版本的老用户,可以直接替换对应jar和资源文件就可以了,注意对应jar的名字即可。

  • 精简版
平台 精简版(老版) 精简版(新版)
核心库 umeng_social_apiv6.0.x.jar
umeng_social_viewv6.0.x.jar
umeng_social_netv6.0.x.jar
umeng_social_api.jar
umeng_social_net.jar
umeng_social_shareview.jar(可选,新浪精简版 豆瓣人人使用)
umeng_social_shareboard.jar(可选,如果没有使用分享面板可以不使用)
umeng_shareboard_widget.jar(工程中存在support v4或不使用面板可以不加)
QQ SocialSDK_QQZone_3.jar
SocialSDK_umengqq.jar
SocialSDK_QQ_Simplify.jar
新浪 SocialSDK_umengsina.jar SocialSDK_Sina_Simplif.jar
微信 SocialSDK_WeiXin_1.jar
SocialSDK_WeiXin_2.jar
SocialSDK_WeChat_Simplify.jar
  • 完整版
平台 完整版(老版) 完整版(新版)
核心库 同精简版 同精简版
QQ mta-sdk-1.6.2.jar
open_sdk_r5509_lite.jar
SocialSDK_QQZone_3.jar
open_sdk_r5756_lite.jar
SocialSDK_QQ_Full.jar
新浪 SocialSDK_Sina.jar
weiboSDKCore_3.1.4.jar
libweibosdkcore.so
SocialSDK_Sina_Full.jar
weiboSDKCore_3.1.4.jar
libweibosdkcore.so
微信 同精简版 wechat-sdk-android-with-mta-1.0.2.jar
SocialSDK_WeiXin_Full.jar

6.3接口变动

所有的回调监听器增加onStart()方法

UMShareListener shareListener = new UMShareListener() {
        @Override
        public void onStart(SHARE_MEDIA platform) {
                   }

        @Override
        public void onResult(SHARE_MEDIA platform) {
                  }

        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
                 }

        @Override
        public void onCancel(SHARE_MEDIA platform) {


        }
    };        
 UMAuthListener authListener = new UMAuthListener() {
        @Override
        public void onStart(SHARE_MEDIA platform) {

        }

        @Override
        public void onComplete(SHARE_MEDIA platform, int action, Map data) {

        }

        @Override
        public void onError(SHARE_MEDIA platform, int action, Throwable t) {
                  }

        @Override
        public void onCancel(SHARE_MEDIA platform, int action) {

        }
    };

去掉了ShareAction的WithTargetURl

  • 进行网页分享请使用UMWeb类型。点击查看文档

  • 音乐类型新增setmTargetUrl方法,部分平台可以设置跳转链接。点击查看文档

去掉了withTitle接口

title参数只在UMWeb类型中存在,设置title请使用UMWeb类型
点击查看文档

设置新浪回调地址

6.3版本之前设置新浪的回调地址是通过Config.REDIRECT_URL

6.3版本之后在设置appid的时候一起设置回调地址:

注意代码这里配置的回调地址需要和微博开放平台授权回调页保持一致

PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");

去掉了等待窗

用户如需添加可在上面提到的onStart中show dialog,在回调完成后dismiss

由于微信、QQ等平台当用户选择留在应用后无法执行回调,因此建议在onResume中执行dialog消失事件

三方登录时是否每次都要进行授权

UMShareConfig config = new UMShareConfig();
config.isNeedAuthOnGetUserInfo(true);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);

目前SDK默认设置为在Token有效期内登录不进行二次授权,如果有需要每次登录都弹出授权页面,便于切换账号的开发者可以自行配置

是否使用分享编辑页

UMShareConfig config = new UMShareConfig();
config.isOpenShareEditActivity(true);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);

注意此接口只有在新浪精简版、豆瓣和人人分享时生效,微信、QQ的分享编辑页为原生SDK提供,无法去除

设置新浪网页授权还是SSO授权

只进行网页授权

 UMShareConfig config = new UMShareConfig();
config.setSinaAuthType(UMShareConfig.AUTH_TYPE_WEBVIEW);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);

调用此接口后,无论用户设备是否安装微博客户端,都只会拉起网页授权

当安装的时候进行SSO授权:

 UMShareConfig config = new UMShareConfig();
config.setSinaAuthType(UMShareConfig.AUTH_TYPE_SSO);
UMShareAPI.get(InfoDetailActivity.this).setShareConfig(config);

6.4接口变动

由于新浪即将对之前的云端接口进行关停,所以新浪精简版需要做一些改版:
代码层面不需要变动,只需要升级到6.4,替换6.4之后的所有jar
同时精简版需要增加一个回调Activity:

  <activity
            android:name=".WBShareActivity"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            intent-filter>
        activity>

这个Activity在包名路径下:

package com.umeng.soexample;

import com.umeng.socialize.media.WBShareCallBackActivity;

public class WBShareActivity extends WBShareCallBackActivity {
}

工程配置

对于快速集成,我们以新浪微博QQ三个平台为例,工程配置分为以下四种,区别不大,不熟悉的朋友可以参考:

Android Studio精简版

Android Studio完整版

工程配置(精简版)

以下内容为Android Studio精简版配置

新建立一个工程

拷贝jar及res

拷贝jar和res有如下两种形式

a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程

b.如果不想像a方式一样一个个拷贝,可以使用集成工具umeng_integrate_tool.jar

双击点开这个工具,如下图所示:

选择你想使用的平台,以及你所使用的开发工具,点击ok
会在当前目录下生成一个新的文件夹umeng_integratetool_result

只需将该文件夹下生成的对应文件对应放入你的工程中即可
这里注意如果使用了新浪微博精简版,或者豆瓣人人腾讯微博,需要加入umeng_social_shareview.jar及其对应的资源文件,如果没有使用这些平台可以不加
如果您的程序不想使用我们的分享面板,想自定义UI分享UI界面,umeng_social_shareboard.jar以及对应的资源文件也可以不用加
如果您使用了我们的分享面板,您的工程已经依赖的v4,可以不使用我们的umeng_shareboard_widget.jar

添加对应的回调Activity

使用微信分享或者登陆功能

在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample,则配置如下:(需要注意,如果使用精简版WXCallbackActivity的路径为com.umeng.weixin.callback.WXCallbackActivity,如果使用完整版路径是com.umeng.socialize.weixin.view.WXCallbackActivity)

同理需要建立回调的平台还有支付宝与易信,支付宝是需要建立一个apshare的文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。易信是需要建立一个yxapi的文件夹,建立一个YXEntryActivity的类继承YXCallbackActivity。如果不使用这两个平台可以不用建立。
同理新浪微博也需要一个回调的Activity,与微信不同的是它只需要在包名目录下建立一个名为WBShareActivity类即可,不用建立文件夹,该类继承WBShareCallBackActivity,如下图所示(注意看目录结构):

修改AndroidManiFest

首先需要添加权限:









然后加入sdk中需要的Activity:

新浪:

  <activity
            android:name=".WBShareActivity"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            intent-filter>
        activity>

微信:


支付宝:

    

qq精简版:

    <activity
            android:name="com.umeng.qq.tencent.AuthActivity"
            android:launchMode="singleTask"
            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="tencent100424468" />
            intent-filter>
    activity>

    <activity
            android:name="com.umeng.qq.tencent.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"/>

qq完整版:

    <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            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="tencent100424468" />
            intent-filter>

    activity>

    <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"/>

分享编辑页(只有新浪微博精简版,豆瓣人人腾讯微博需要):

 

其他平台的回调activity请到附录中查询。

添加友盟appkey
    data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" >
    data>

修改build.gradle文件

将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore

然后增加签名文件的密码:

signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword "android"
        keyAlias "androiddebugkey"
        keyPassword "android"
    }
}

然后在buildTypes中将这个signingConfigs配置进去,如下图所示:

签名文件如果不加,部分平台的授权会受到影响。

配置各个平台的appkey

建立一个application文件,随便起一个名字,比如叫App,别忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):

     "true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:supportsRtl="true"
        android:name=".App"
        android:theme="@style/AppTheme">

在application文件中配置三方平台的appkey:

这里作为示例,只配置了微信、QQ/Qzone、新浪的三方appkey,如果使用其他平台,在这里增加对应平台key配置

public class App extends Application{
    {

PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com");
    }
    }

在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:

        @Override
        public void onCreate() {
        super.onCreate();
        UMShareAPI.get(this);
    }

工程配置(完整版)

以下内容为Android Studio完整版配置

新建立一个工程

拷贝jar及res

拷贝jar和res有如下两种形式

a.将main文件夹以及platform(选择你想使用的平台即可)文件下,对应的资源文件和jar放入你的工程

友盟第三方平台操作流程_第4张图片

b.如果不想像a方式一样一个个拷贝,可以使用集成工具umeng_integrate_tool.jar

双击点开这个工具,如下图所示:

选择你想使用的平台,以及你所使用的开发工具,点击ok
会在当前目录下生成一个新的文件夹umeng_integratetool_result

只需将该文件夹下生成的对应文件对应放入你的工程中即可
这里注意如果使用了新浪微博精简版,或者豆瓣人人腾讯微博,需要加入umeng_social_shareview.jar及其对应的资源文件,如果没有使用这些平台可以不加
如果您的程序不想使用我们的分享面板,想自定义UI分享UI界面,umeng_social_shareboard.jar以及对应的资源文件也可以不用加
如果您使用了我们的分享面板,您的工程已经依赖的v4,可以不使用我们的umeng_shareboard_widget.jar

添加对应的回调Activity

使用微信分享或者登陆功能

在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivity。这里注意一定是包名路径下,例如我的包名是com.umeng.soexample,则配置如下:(需要注意,如果使用精简版WXCallbackActivity的路径为com.umeng.weixin.callback.WXCallbackActivity,如果使用完整版路径是com.umeng.socialize.weixin.view.WXCallbackActivity)

同理需要建立回调的平台还有支付宝与易信,支付宝是需要建立一个apshare的文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。易信是需要建立一个yxapi的文件夹,建立一个YXEntryActivity的类继承YXCallbackActivity。如果不使用这两个平台可以不用建立。
同理新浪微博也需要一个回调的Activity,与微信不同的是它只需要在包名目录下建立一个名为WBShareActivity类即可,不用建立文件夹,该类继承WBShareCallBackActivity,如下图所示(注意看目录结构):

修改AndroidManiFest

首先需要添加权限:









然后加入sdk中需要的Activity:

新浪:

       <activity
            android:name=".WBShareActivity"
            android:configChanges="keyboardHidden|orientation"
            android:screenOrientation="portrait" >
            <intent-filter>
                <action android:name="com.sina.weibo.sdk.action.ACTION_SDK_REQ_ACTIVITY" />
                <category android:name="android.intent.category.DEFAULT" />
            intent-filter>
        activity>
        <activity
            android:name="com.sina.weibo.sdk.component.WeiboSdkBrowser"
            android:configChanges="keyboardHidden|orientation"
            android:windowSoftInputMode="adjustResize"
            android:exported="false" >
        activity>
          <service android:name="com.sina.weibo.sdk.net.DownloadService"
            android:exported="false">service>

微信:


支付宝:

    

qq完整版:

    <activity
            android:name="com.tencent.tauth.AuthActivity"
            android:launchMode="singleTask"
            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="tencent100424468" />
            intent-filter>
    activity>
    <activity
            android:name="com.tencent.connect.common.AssistActivity"
            android:screenOrientation="portrait"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"
            android:configChanges="orientation|keyboardHidden|screenSize"/>

分享编辑页(只有豆瓣人人腾讯微博twitter领英需要):

 

其他平台的回调activity请到附录中查询。

添加友盟appkey
    data
            android:name="UMENG_APPKEY"
            android:value="561cae6ae0f55abd990035bf" >
    data>

修改build.gradle文件

将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore

然后增加签名文件的密码:

signingConfigs {
    debug {
        storeFile file('debug.keystore')
        storePassword "android"
        keyAlias "androiddebugkey"
        keyPassword "android"
    }
}

然后在buildTypes中将这个signingConfigs配置进去,如下图所示:

签名文件如果不加,部分平台的授权会受到影响。

配置各个平台的appkey

建立一个application文件,随便起一个名字,比如叫App,别忘了在AndroidManifest文件中配置(如果本身已有,不需要重新建立):

 

在application文件中配置三方平台的appkey:

这里作为示例,只配置了微信、QQ/Qzone、新浪的三方appkey,如果使用其他平台,在这里增加对应平台key配置

public class App extends Application{
    {

PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
PlatformConfig.setSinaWeibo("3921700954", "04b48b094faeb16683c32669824ebdad", "http://sns.whalecloud.com");
    }
    }

在application中初始化sdk,这个初始化最好放在application的程序入口中,防止意外发生:

        @Override
        public void onCreate() {
        super.onCreate();
        UMShareAPI.get(this);
    }

分享

分享文档

授权

授权文档

混淆文件

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

    -dontusemixedcaseclassnames
    -dontshrink
    -dontoptimize
    -dontwarn com.google.android.maps.**
    -dontwarn android.webkit.WebView
    -dontwarn com.umeng.**
    -dontwarn com.tencent.weibo.sdk.**
    -dontwarn com.facebook.**
    -keep public class javax.**
    -keep public class android.webkit.**
    -dontwarn android.support.v4.**
    -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 class com.android.dingtalk.share.ddsharemodule.** { *; }
    -keep public class com.umeng.socialize.* {*;}


    -keep class com.facebook.**
    -keep class com.facebook.** { *; }
    -keep class com.umeng.scrshot.**
    -keep public class com.tencent.** {*;}
    -keep class com.umeng.socialize.sensor.**
    -keep class com.umeng.socialize.handler.**
    -keep class com.umeng.socialize.handler.*
    -keep class com.umeng.weixin.handler.**
    -keep class com.umeng.weixin.handler.*
    -keep class com.umeng.qq.handler.**
    -keep class com.umeng.qq.handler.*
    -keep class UMMoreHandler{*;}
    -keep class com.tencent.mm.sdk.modelmsg.WXMediaMessage {*;}
    -keep class com.tencent.mm.sdk.modelmsg.** implements   com.tencent.mm.sdk.modelmsg.WXMediaMessage$IMediaObject {*;}
    -keep class im.yixin.sdk.api.YXMessage {*;}
    -keep class im.yixin.sdk.api.** implements im.yixin.sdk.api.YXMessage$YXMessageData{*;}
    -keep class com.tencent.mm.sdk.** {
     *;
    }
    -keep class com.tencent.mm.opensdk.** {
   *;
    }
    -dontwarn twitter4j.**
    -keep class twitter4j.** { *; }

    -keep class com.tencent.** {*;}
    -dontwarn com.tencent.**
    -keep public class com.umeng.com.umeng.soexample.R$*{
    public static final int *;
    }
    -keep public class com.linkedin.android.mobilesdk.R$*{
    public static final int *;
        }
    -keepclassmembers enum * {
    public static **[] values();
    public static ** valueOf(java.lang.String);
    }

    -keep class com.tencent.open.TDialog$*
    -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.sina.** {*;}
    -dontwarn com.sina.**
    -keep class  com.alipay.share.sdk.** {
       *;
    }
    -keepnames class * implements android.os.Parcelable {
    public static final ** CREATOR;
    }

    -keep class com.linkedin.** { *; }
    -keepattributes Signature

你可能感兴趣的:(Android)