Android——友盟社会化分享集成【友盟4.3版本SDK】

前言:

目前主流APP都会使用分享功能, 包括分享APP下载路径,分享APP里面有趣的东西,市面上分享集成SDK还是挺多的,各有千秋,我个人使用过的分享平台主要有两个:

(1),ShareSDK 

(2), 友盟社会化分享

下面就简单的介绍一下如何在你的Android APP里面集成 友盟社会化分享平台

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


1,产品概述


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


2,获取友盟APPkey 


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

如果你尚未在友盟注册开发者账号, 需要先注册,注册之后登陆你的账号, 点击“添加新应用”,填写应用基本信息后, 将进入“下载SDK并添加代码”页面,此页面可以得到你注册APP的APPkey。


3,下载并安装SDK

(1)下载最新的SDK

(2)添加代码和资源引用

  注:


 3.1 添加资源文件和 jar 文件

(1) 手动添加资源和jar

  解压SDK压缩包,将文件夹中的main/libs 和 main/res 文件夹复制到你的项目工程目录中。



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地址
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方法, 并添加如下代码

<span style="font-size:18px;">@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);
    }
}</span>

注意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分享所依赖的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 添加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中。


7, 微信签名说明 

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

7.1 获取签名文件

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


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


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

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

7.3 微信集成测试

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


8. 混淆

为了保证引用友盟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 *;
}


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









  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要在官网注册并创建应用,然后在应用管理中获取 Appkey 和 AppSecret。接下来按照以下步骤进行集成: 1. 在项目的 build.gradle 文件中添加以下依赖: ``` implementation 'com.umeng.umsdk:push:latest.integration' ``` 2. 在 AndroidManifest.xml 文件中添加以下权限和配置信息: ```xml <!-- 权限 --> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> <uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 友盟推送服务 --> <service android:name="com.umeng.message.UmengMessageService" /> <service android:name="com.umeng.message.UmengNotifyClickService" /> <receiver android:name="com.umeng.message.NotificationProxyBroadcastReceiver" /> <meta-data android:name="com.umeng.message.appkey" android:value="YOUR_APP_KEY" /> <meta-data android:name="com.umeng.message.channel" android:value="YOUR_CHANNEL_ID" /> ``` 其中,YOUR_APP_KEY 和 YOUR_CHANNEL_ID 需要替换为在官网获取的 Appkey 和渠道号。 3. 在代码中初始化 SDK: ```java // 初始化友盟推送 sdk PushAgent pushAgent = PushAgent.getInstance(this); // 启用推送服务 pushAgent.enable(); ``` 注意,这里的 this 是上下文对象,需要在 Activity 或 Application 中调用。 以上就是在 UnionApp 中集成友盟消息推送 SDK 的步骤,希望能对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值