友盟多平台分享(有用的实战工具)

友盟官方文档
http://dev.umeng.com/social/android/quick-integration?spm=0.0.0.0.pG0caE

1. 产品概述

关于分享和授权的sdk接口,我们在v5.0做出了巨大的改变,精简了接口调用的代码。并将分享授权,与评论等功能做出了隔离,使结构更加清晰。所以本版本的功能也只有分享与授权并无其他功能,请开发者注意。
注意:本文示例代码只有分享与授权功能,并对接口进行了调整,如需要原功能的开发者,请继续使用v4.3.0版本。

2. 获取友盟Appkey

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

3. 下载官方SDK

关于这一步,自行到官网下载即可,无非就是把下载好的jar包拷贝到项目中(按友盟官方文档来即可)

4、AndroidManifest配置

在AndroidManifest.xml中的 中设置

(1)友盟Appkey(注意value需要设置成你自己的值,否则会失败)


        

(2)增加权限


















(3)针对不平台所需要添加的数据,按照自己需要的平台添加对应的配置
微信:


qq精简版:


        
            

            
            

            
            
            
            

qq完整版:

 
        
            

            
            

            
            
            
            

分享编辑页


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

在application类中配置第三方分享平台的appkey以及友盟的初始化:

public class MyApplication extends Application {

    {
        PlatformConfig.setWeixin("wx7db093453016ae52", "d0d9e6d67b85b128261d4131515d3a97");
        PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba");
    }

    @Override
    public void onCreate() {
        super.onCreate();

        //初始化友盟sdk
        UMShareAPI.get(this);
    }

关于各个平台的配置,各个平台的配置,建议放在全局Application或者程序入口(需要到各个平台去注册申请)



PlatformConfig.setWeixin("wx967daebe835fbeac", "5bb696d9ccd75a38c8a0bfe0675559b3");
       //微信 appid appsecret
PlatformConfig.setSinaWeibo("3921700954","04b48b094faeb16683c32669824ebdad");
       //新浪微博 appkey appsecret
PlatformConfig.setQQZone("100424468", "c7394704798a158208a74ab60104f0ba"); 
        // QQ和Qzone appid appkey     
PlatformConfig.setAlipay("2015111700822536");
        //支付宝 appid
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
        //易信 appkey      
PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi", "MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
        //Twitter appid appkey
PlatformConfig.setPinterest("1439206");
        //Pinterest appid 
PlatformConfig.setLaiwang("laiwangd497e70d4", "d497e70d4c3e4efeab1381476bac4c5e");
        //来往 appid appkey

---------------------至此友盟分享的配置已经完成---------------------------------

接下来就是分享的完整代码了

public class ShareUtils {

    private Activity activity;
    private String targetUrl; //分享的链接

    public ShareUtils(Activity activity, String targetUrl){
        this.activity = activity;
        this.targetUrl = targetUrl;
    }

    //多平台分享(qq、qq空间、微信、微信朋友圈)
    public  void shareMorePlatform() {
        new ShareAction(activity).setDisplayList(
                SHARE_MEDIA.QQ, SHARE_MEDIA.QZONE, SHARE_MEDIA.WEIXIN,
                SHARE_MEDIA.WEIXIN_CIRCLE)
                .setShareboardclickCallback(shareBoardlistener).open();
    }

    private  ShareBoardlistener shareBoardlistener = new ShareBoardlistener() {

        @Override
        public void onclick(SnsPlatform snsPlatform, SHARE_MEDIA share_media) {
            if (share_media == null) {
                if (snsPlatform.mKeyword.equals("umeng_sharebutton_custom")) {
                    Toast.makeText(activity, "add button success", Toast.LENGTH_SHORT).show();
                }

            } else {
                new ShareAction(activity)
                        .setPlatform(share_media)
                        .setCallback(umShareListener)
                        .withText("来自知么网络的分享")
                        //分享图片
                        .withMedia(new UMImage(activity, R.drawable.applogo120))
                        //分享网络链接
                        .withTargetUrl(targetUrl)
                        .share();
            }
        }
    };

    private  UMShareListener umShareListener = new UMShareListener() {
        @Override
        public void onResult(SHARE_MEDIA platform) {
            Log.i("plat", "---->分享成功了");
            Log.i("plat", "platform" + platform);
            Toast.makeText(activity, "分享成功啦", Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onError(SHARE_MEDIA platform, Throwable t) {
            Toast.makeText(activity, "分享失败啦", Toast.LENGTH_SHORT).show();
            if (t != null) {
                Log.i("plat", "---->分享失败了");
                Log.i("throw", "throw:" + t.getMessage() + t.getCause());
            }
        }

        @Override
        public void onCancel(SHARE_MEDIA platform) {
            Toast.makeText(activity, "分享取消了", Toast.LENGTH_SHORT).show();
        }
    };

}

6、关于微信分享

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

关于微信平台申请对应的appkey需要的注意事项,(我的项目一开始就是没有在微信平台设置好这个签名,就一直打不开微信分享)

1)签名
2)包名(必须是你的项目的包名)
签名的获取可以参考这篇博客
微信开放平台中android 应用签名的获取

微信签名说明
由于微信的签名过程跟验证流程较多,出错的可能性较大,这里将对微信的签名过程跟验证做详细的说明。
首先必须确保正确设置微信AppID及secret 工程的包名必须同申请应用的包名一致。 在微信开放平台填写你App的的签名,测试、发布时要保证App的签名跟微信开放平台的签名一致。 开发者的应用需要通过审核。开发者在申请应用必须要通过微信官网的审核才能进行调试,可以使用签名工具自行检查比对
8.3.1 获取签名
获取应用签名方式有两种
8.3.1.1 方式一:
用eclipse导出 带签名 的apk文件,注意此时选择的签名文件是你发布app时的签名文件。在导出的最后一步,eclipse会显示一个Certificate fingerprints(证书指纹),如下图。此时找到MD5值,将该MD5值复制出来,按照“ 去掉冒号(:),大写转小写 ”的规则装换,此时字符串就是签名。

友盟多平台分享(有用的实战工具)_第1张图片

8.3.1.2 方式二:
导出 带签名 的apk文件,将该apk文件安装至手机中。安装微信的 签名工具,打开应用程序,即可得到签名。
将获取到的签名和下图进行比对
友盟多平台分享(有用的实战工具)_第2张图片

注意如果修改了微信平台的包名和签名,需要重装微信客户端后才可以测试,否则本地会保留之前的签名缓存

7、QQ及Qzone登录

实现方法同样如上,注意下面几点:
QQ及Qzone登录都必须安装QQ客户端,并且只能跳转QQ客户端实现登录,无法跳转到Qzone客户端
QQ及Qzone登录需要确保在腾讯平台通过审核或添加测试账号,否则会报错110406
QQ及Qzone登录必须确保apk签名与腾讯平台上传的apk签名匹配,否则会报错100044,出现此错误请联系腾讯平台人员(QQ:800013811 )修改apk签名

注意将Android manifest xml里的 腾讯平台APPID替换为自己申请的APPID,注意tencent前缀不要修改,否则无法正常实现QQ及Qzone登录
平台授权,是需要安装对应的客户端的。新浪微博,豆瓣网,人人网除外,新浪和人人如果本地安装了对应平台是走本地授权,如果没有安装,需要走网络授权

你可能感兴趣的:(友盟多平台分享(有用的实战工具))