友盟:4.3版本快速集成

2016-03-29 14:51:58 |发布者: 安智宝

1.  产品概述

本文档只针对sdk v4.3版本适用,不适用于sdk v5.0版本

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

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

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

2.  获取友盟Appkey

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

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

3.  下载并安装SDK

  1. 下载SDK最新版
  2. 添加代码和资源引用

jar文件对应列表

平台jar文件
QQ空间\QQ好友SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar
微信好友SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar

注意

1:QQ和QQ Zone SSO(免登录)引用的jar文件相同。当需要同时支持QQ和QQ Zone的时候,只需添加一次SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件即可.

2:由于我们对微信的包名做了修改(libammsdk.jar -> SocialSDK_WeiXin.jar),如出现"Unable to execute dex: Multiple dex files define "问题,请删除libammsdk.jar或者SocialSDK_WeiXin.jar中的一个即可解决问题。

3.1  添加资源文件和jar文件

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

3.1.1  手动添加资源和jar

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

3.1.2  添加工程引用

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

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

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/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" >

<!-- ###################注册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"

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

<!-- 100424468,如果你使用的公用账号,则不需要修改;否则修改成你在QQ开放平台申请的 APP ID-->

<data android:scheme="tencent100424468" />

</intent-filter>

</activity>

<activity android:name="com.tencent.connect.common.AssistActivity"

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

android:screenOrientation="portrait">

</activity>

<!-- ###################添加UmengAppkey###################### -->

<meta-data

android:name="UMENG_APPKEY"

android:value="xxxxxxxxxxxxxxxxxxxxxx" >

</meta-data>

</application>

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

<!-- ###################声明SDK使用的相关权限###################### -->

<!-- 检测网络状态 -->

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!-- 获取mac地址作为用户的备用唯一标识 -->

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

<!-- 获取用户手机的IMEI,用来唯一的标识用户 -->

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

<!-- 缓存资源优先存入SDcard -->

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<!-- 允许应用程序联网,以便向我们的服务器端发送数据 -->

<uses-permission android:name="android.permission.INTERNET" />

<!-- QQ、QQ空间所需权限 -->

<uses-permission android:name="android.permission.GET_TASKS" />

</manifest>

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

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

SocializeConstants.APPKEY = "xxxxxxxxx";

4.  打开平台选择面板

4.1  首先在您的Activity中添加如下成员变量并设置分享内容

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

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

// 设置分享内容

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

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

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

4.1.1  通过某个按钮或其他方法弹出分享面板

mController.getConfig().removePlatform( SHARE_MEDIA.RENREN, SHARE_MEDIA.DOUBAN);

yourShareButton.setOnClickListener(new OnClickListener() {

@Override

public void onClick(View v) {

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

mController.openShare(getActivity(), false);

}

});

5.  验证效果

编译并运行后,点击添加分享功能的View出现如下页面,那么说明你已经集成成功基本的分享功能和平台了!但是,为了使您的用户有更好的分享体验,以及您的应用有更多的分享量,更好地在社交平台上传播,我们建议您按照下面的指引进行SSO(免登录)和新平台的设置。

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


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

SSO名词解释 : SSO英文全称Single Sign On,单点登录。SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。

例如用户已经登录新浪微博客户端,使用SSO授权登录时则不需要用户手动输入用户名、密码,直接点击登录即可, 因此可成为免登录.

6.1  配置SSO授权回调

如果有使用新浪、人人的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);

}

}

注意onActivityResult方法必须写在分享所在的Activity或fragment依赖的Activity中,不可以直接写在fragment中

6.2  分享到微信和朋友圈

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

1.解压已下载的zip文件,将platforms/weixin/libs目录中SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。

2.在libs目录中找到SocialSDK_WeiXin_1.jar,SocialSDK_WeiXin_2.jar文件,鼠标右键-->Add to Build Path。

3 将解压目录中platforms/weixin/res拷贝至你工程的res目录。应用宝下载

6.3  添加如下集成代码

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

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

注意

此版本兼容了微信支付的功能,请更新SocialSDK_WeiXin_1.jar文件。

6.4  微信和微信朋友圈的回调

如果在您的项目中集成了微信或者微信朋友圈,并且您需要准确的分享回调,则需要在AndroidManifest.xml中下注册下面的回调Activity。

<activity

android:name=".wxapi.WXEntryActivity"

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

android:configChanges="keyboardHidden|orientation|screenSize"

android:exported="true"

android:screenOrientation="portrait" />

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

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

其中分享的回调接口SnsPostListener的onComplete方法的第二个参数代表分享的状态码,当值为200时表示分享成功;其余的值则为分享失败。

微信集成相关说明

微信集成注意以下几点

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

Demo中集成的微信无法使用?

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

  • 申请一个测试Demo中AppID.(申请地址).

    填写"包名"时请使用Demo的包名"com.umeng.soexample".

    填写"签名"使用签名生成工具(签名工具)生成,签名时填写Demo的包名.

    获取微信AppID后替换Demo中的使用的AppID.

  • 使用SDK中的 debug.keystore编译运行Demo工程.

6.5  分享给QQ好友

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

  1. 解压已下载的zip文件,将platforms/qq_zone/libs目录中SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。
  2. 在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,鼠标右键-->Add to Build Path。
  3. 将解压目录中platforms/qq_zone/res文件拷贝至你工程res目录。
  4. 在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件。

6.6  添加如下集成代码

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

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

"c7394704798a158208a74ab60104f0ba");

qqSsoHandler.addToSocialSDK();

注意:

1.此版本集成了QQ的最新jar文件,请更新SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件.

2.QQ分享内容为音乐,视频的时候,其形式必须为url;图片支持url和本地图片类型.

3.QQ SSO授权不会在onActivityResult方法内被调用。

4.未安装手机QQ客户端的情况下,QQ不支持纯图片分享.

5.未安装手机QQ客户端的情况下,QQ取消授权不执行相关回调。

6.QQ和QQ空间授权,对于同一个应用同一个账号返回的uid,openid相同。

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

6.7.1  添加QQ空间所依赖的jar文件跟资源文件

如果已经添加了SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,则不需要再次添加。

1.解压已下载的zip文件,将platforms/qq_qzone/libs中 SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3. jar拷贝到工程的libs(如果没有此目录,新建libs目录)目录中。

2.在libs目录中找到SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件,鼠标右键-->Add to Build Path。

3.将解压目录中platforms/qq_zone/res文件拷贝至你工程res目录。

4.在AndroidManifest.xml中注册AuthActivity,QQ空间和QQ共用该授权Activity,具体配置参考上文的AndroidManifest.xml文件。

6.7.2  在集成代码中添加如下代码

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

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

"c7394704798a158208a74ab60104f0ba");

qZoneSsoHandler.addToSocialSDK();

注意:

1.本次集成了QZone的最新jar包,升级时请注意更新SocialSDK_QQZone_1.jar,SocialSDK_QQZone_2.jar,SocialSDK_QQZone_3.jar文件。

2.在进行QZone SSO授权时,请在AndroidManifest.xml中配置相应的Activity。具体参加上文AndroidManifest.xml文件配置。

3.QZone不支持纯图片分享。

4.无手机QQ客户端的情况下,QQ取消授权不执行相关回调。

5.QQ和QQ空间授权,对于同一个应用同一个账号返回的uid,openid相同。

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

注意一定保证在新浪微博上填写应用签名,参考文档

6.8.1  1.添加SSO必须的文件

将platforms/sina/libs中的SocialSDK_Sina.jar添加到工程libs中并将该jar加入到build path中, 由于4.2版本将remoteSSO文件打入SocialSDK_Sina.jar中,因此老版本升级过程中需要删除旧版本中的remoteSSO文件,否则会出现文件冲突

6.8.2  在代码中添加如下代码

//设置新浪SSO handler

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

在对应的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);

}

}

注意onActivityResult方法必须写在分享所在的Activity或fragment依赖的Activity中,不可以直接写在fragment中

6.9  SSO(免登录)分享到人人

添加人人SSO所依赖的jar文件 1.解压已下载的zip文件,将platforms/renren/libs/SocialSDK_renren_1.jar,SocialSDK_renren_2.jar,拷贝到你工程libs目录中。

2.在libs工程找到SocialSDK_renren_1.jar,SocialSDK_renren_2.jar文件,鼠标右键-->Add to Build Path。友盟消息推送

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

//添加人人网SSO授权功能

//APPID:201874

//API Key:28401c0964f04a72a14c812d6132fcef

//Secret:3bf66e42db1e4fa9829b955cc300b737

RenrenSsoHandler renrenSsoHandler = new RenrenSsoHandler(getActivity(),

"201874", "28401c0964f04a72a14c812d6132fcef",

"3bf66e42db1e4fa9829b955cc300b737");

mController.getConfig().setSsoHandler(renrenSsoHandler);

在SDK中的OAuth授权部分包含了Activity,为了程序能正常允许,请将以下Activity信息在您的应该工程Androidmanefest.xml中注册:

<activity android:name="com.renn.rennsdk.oauth.OAuthActivity"

android:configChanges="orientation|navigation|keyboardHidden"/>

然后添加如下权限 :     

    <uses-permission android:name="android.permission.GET_TASKS" />

<uses-permission android:name="android.permission.SET_DEBUG_APP" />

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

<uses-permission android:name="android.permission.GET_ACCOUNTS" />

<uses-permission android:name="android.permission.USE_CREDENTIALS" />

<uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />

注意

1.手机中必须安装人人客户端V5.9.3及以上的版本才支持SSO功能。

2.由于人人SSO没有提供回调,因此人人SSO不会在onActivityResult方法内被调用(人人SSO授权流程不经过onActivityResult方法)。

7.  微信签名说明

由于微信的签名过程跟验证流程较多,出错的可能性较大,这里将对微信的签名过程跟验证做详细的说明。

7.1  获取签名文件

获取应用签名方式有两种 方式一:

1:用eclipse导出 带签名 的apk文件,注意此时选择的签名文件是你发布app时的签名文件。在导出的最后一步,eclipse会显示一个Certificate fingerprints(证书指纹),如下图。此时找到MD5值,将该MD5值复制出来,按照“ 去掉冒号(:),大写转小写 ”的规则装换,此时字符串就是签名。

通过eclispe获取签名

方式二:

导出 带签名 的apk文件,将该apk文件安装至手机中。安装微信的签名工具,打开GenSignature应用程序,填写你App的包名,点击“Get Signature”即可得到签名。

通过微信签名工具获取签名

7.2  请在微信开放平台申请应用

1:填写App的相关信息,注意确保包名跟签名填写正确,填写完成提交微信审核。

7.3  微信集成测试

1:在进行微信集成测试时,请填写你申请App的AppID。测试时需要导出带签名的apk文件测试,否则将不能正常分享。

8.  应用信息注册地址列表

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

平台网址
新浪微博http://open.weibo.com
QQ空间http://open.qq.com/
微信好友http://open.weixin.qq.com
FaceBookhttps://developers.facebook.com
人人http://dev.renren.com
豆瓣http://developers.douban.com/

9.  混淆

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

-dontshrink

-dontoptimize

-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 com.umeng.socialize.* {*;}

-keep public class javax.**

-keep public class android.webkit.**

-keep class com.facebook.**

-keep class com.umeng.scrshot.**

-keep public class com.tencent.** {*;}

-keep class com.umeng.socialize.sensor.**

-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 public class [your_pkg].R$*{

public static final int *;

}

9.1  进阶使用

如果上述文档不能满足你的分享需求,请移步至详细集成文档


关于安智宝

    安智宝是主打效果的安卓应用推广平台。通过安智宝,用户可以通过自助方式 进行应用推广。作为效果性的推广平台,安智宝利用云技术智能的进行渠道匹 配,对渠道的高效利用,节约用户的每一分钱。用户可以精确的控制应用投放 每天的投放量、渠道质量(留存率等),做到覆盖广、活跃度高、控制精准。

联系客服

Copyright © 2016 - 2020 anzhibao.com . All Right Reserved.

安智宝  版权所有