U-Share Sdk分享 快速集成使用

免费集成视频

https://edu.csdn.net/course/detail/32453

主要功能:

一键分享,支持国内外30+主流三方平台

           国内:微信、QQ、微博、抖音、钉钉、支付宝等

           国外:Facebook、Instagram等

           分享形式:小程序、链接、文本、图片、视频等

 

 

今天重点讲一下集成,使用。

接入指南

本文档适用于Android组件化分享SDK6.9.0及以上版本。

获取appkey

集成友盟+ U-Share SDK之前,您首先需要到 【友盟+】官网注册并且添加新应用,获得Appkey。如果已经注册过应用这步可以忽略

说明

特别提醒 :我们建议开发者在注册账号时使用企业邮箱,避免使用个人邮箱注册,防止由于个人离职带来的问题,建议使用的账号形式:umeng@企业域名、apps@企业域名、dev@企业域名。

常见问题FAQ:

Q :应用的安卓版和iOS版能否共用一个appkey?

A :不同平台的应用禁止使用相同的Appkey,需要分开注册。

Q :注册应用时,提示应用名称已存在;

A :【友盟+】后台的应用名与实际应用名和包名无关,建议命名为应用名+平台(iOS/Android)。

 

集成U-Share SDK

自动集成(gradle在线依赖)

分享SDK需要配合9.x.x版本基础组件库(含统计功能)才能正常使用。

从基础组件库 1.5.4版本/分享SDK 6.9.4版本开始,Android SDK gradle在线依赖库启用新坐标。下面以集成基础组件库 v9.3.8 + 分享SDK 7.1.4版本为例,说明如何在Android Studio工程build.gradle配置脚本中添加gradle线上依赖。

集成9.x.x基础组件库

在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】SDK maven仓库地址。

maven { url  'https://repo1.maven.org/maven2/'}

在线集成新浪微博官方依赖库还需要增加新浪微博的maven仓库地址,但是近期由于新浪线上服务器不稳定的原因,此方式可能会报错,如报错建议手动集成:https://github.com/sinaweibosdk/weibo_android_sdk

maven { url "https://dl.bintray.com/thelasterstar/maven/" }

maven3

在工程App对应build.gradle配置脚本dependencies段中添加基础组件库和分享核心库依赖:

compile  'com.umeng.umsdk:common:9.3.8'//必选compile  'com.umeng.umsdk:asms:1.2.2'//必选compile 'com.umeng.umsdk:link:1.0.0'//集成U-Link,可选,如要统计分享回流次数和分享新增用户指标则必选

更多方式可以参考移动统计SDK集成文档中集成流程 部分,将基础组件库和对应必选插件集成到应用中。

集成U-Share SDK

集成完基础组件库后,就可集成U-Share SDK了。

分享SDK gradle 在线依赖目前支持QQ、微信、新浪微博、支付宝、钉钉5个国内主流三方分享平台,其它平台还是需要从【友盟+】官网下载SDK进行离线集成。

注意

QQ、微信和微博平台在分享7.1.4SDK及以上版本,除了集成友盟官方依赖库,还需要额外集成QQ、微信和微博的官方SDK依赖库

注意

近期由于新浪线上服务器不稳定的原因,在线集成新浪微博依赖库implementation ‘com.sina.weibo.sdk:core:10.10.0:openDefaultRelease@aar’ 方式容易失败,新浪微博官方已经发了公告:https://github.com/sinaweibosdk/weibo_android_sdk。建议您先下载本地aar后上传到自己公司服务器,后续新浪微博官方会支持在线集成功能。

compile  'com.umeng.umsdk:share-core:7.1.4'//分享核心库,必选
compile  'com.umeng.umsdk:share-board:7.1.4'//分享面板功能,可选

compile  'com.umeng.umsdk:share-qq:7.1.4'
compile  'com.tencent.tauth:qqopensdk:3.51.2'//QQ官方SDK依赖库
compile  'com.umeng.umsdk:share-wx:7.1.4'
compile  'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.6.5'//微信官方SDK依赖库
compile  'com.umeng.umsdk:share-sina:7.1.4'
compile  'com.sina.weibo.sdk:core:10.10.0:openDefaultRelease@aar'//新浪微博官方SDK依赖库,如在线集成失败请本地下载
compile  'com.umeng.umsdk:share-alipay:7.1.4'
compile  'com.umeng.umsdk:share-dingding:7.1.4'

如果您集成gradle依赖失败,请测试一下,是否能通过浏览器访问 https://bintray.com/ 网站,如无法访问,建议您使用离线jar包方式集成。

我们提供了gradle在线依赖方式的三合一Demo,开发者可以参考:https://github.com/umeng/MultiFunctionAndroidMavenDemo-master

自动集成完成后可以直接跳到添加回调Activity一节

手动集成

以下是手动集成基础组件库和U-Share SDK的流程,自动集成可以跳过这部分

获取SDK

image.png

  • 点击社会化分享旁边的【设置】,在弹框里选中您想要集成的第三方社交平台,选中后点击【确定】即可。注:因精简版后续不再更新,因此更推荐您集成完整版的第三方平台SDK

image.png

  • 点击页面下方的【下载】按钮,就可以把包含所选第三方平台的U-Share SDK(包含了基础组件库)下载到本地了,如想统计到分享回流次数和分享新增用户,则必须勾选智能超链SDKimage.png下载后如下图所示:mage.png

 

导入jar和res

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

 

添加回调Activity

微信在包名目录下创建wxapi文件夹,新建一个名为WXEntryActivity的activity继承WXCallbackActivityQQ与新浪QQ与新浪不需要添加Activity,但需要在使用QQ分享或者授权的Activity中,添加:



 
 

@Override protectedvoid onActivityResult(int requestCode,int resultCode,Intent data){ super.onActivityResult(requestCode, resultCode, data); UMShareAPI.get(this).onActivityResult(requestCode, resultCode, data); }

注意onActivityResult不可在fragment中实现,如果在fragment中调用登录或分享,需要在fragment依赖的Activity中实现

支付宝与微信相似,支付宝需要在包名目录下创建apshare文件夹,然后建立一个ShareEntryActivity的类,继承ShareCallbackActivity。

钉钉与微信相似,钉钉需要在包名目录下创建ddshare文件夹,然后建立一个DDShareActivity的类,DingCallBack

 

创建第三方平台应用

大部分社交平台进行分享、登录操作首先需要在第三方平台创建应用并提交审核,创建应用后,分享、登录操作时显示的应用icon、名称和对应开放平台设置有关,必须要创建应用的平台为:微信、QQ、新浪、钉钉、企业微信、支付宝、Facebook、Kakao、LinkeIn、Twitter,创建应用方法请参考文档

配置Android Manifest XML

创建完第三方平台应用后,还需要进行一些配置。以下是部分社交平台需要进行的配置, 集成过程中遇到问题可参考官方Demo样例工程:https://github.com/umeng/MultiFunctionAndroidDemo

微信

需要在工程AndroidManifest.xml清单文件中增加:



 
 

<activity android:name=".wxapi.WXEntryActivity" android:configChanges="keyboardHidden|orientation|screenSize" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar"/>微信分享模块还需要在工程AndroidManifest.xml清单文件中增加provider标签配置

注意:对应authorities属性值请结合您自己包名自行定义,不要直接使用Umeng Demo工程中属性值com.tencent.sample2.fileprovider。



 
 

<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths /> </provider> // ${applicationId}为你的应用包名

 
注意

provider对应authorities属性值不可以自定义,必须是android:authorities=”${applicationId}.fileprovider”

微信分享模块集成时除了要配置工程AndroidManifest.xml清单文件之外,还需要在res/xml目录(如果没有xml目录,则新建一个)下,添加文件filepaths.xml,内容如下:



 
 

<?xml version="1.0" encoding="utf-8"?> <pathsxmlns:android="http://schemas.android.com/apk/res/android"> <external-files-pathname="umeng_cache"path="umeng_cache/"/> </paths>

注:targetSdkVersion升级到30的宿主App,如果遇到分享时报错未安装微信客户端,请参考Android11客户端检测失败问题

QQ

需要在工程AndroidManifest.xml清单文件中增加以下参数:

请注意将我们的qq appkey替换成您自己的qq appkey。对应authorities属性值请结合您自己包名自行定义,不要直接使用Umeng Demo工程中属性值com.tencent.sample2.fileprovider



 
 

<activity android:name="com.tencent.tauth.AuthActivity" android:launchMode="singleTask" android:noHistory="true"> <intent-filter> <actionandroid:name="android.intent.action.VIEW"/> <categoryandroid:name="android.intent.category.DEFAULT"/> <categoryandroid:name="android.intent.category.BROWSABLE"/> <dataandroid:scheme="tencent100424468"/> </intent-filter> </activity> <activity android:name="com.tencent.connect.common.AssistActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar" android:configChanges="orientation|keyboardHidden|screenSize"/> <provider android:authorities="${applicationId}.fileprovider" android:name="android.support.v4.content.FileProvider" android:exported="false" android:grantUriPermissions="true" > <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/filepaths"/> </provider>

QQ依赖QQ官方SDKv3.51.2,集成时除了要配置工程AndroidManifest.xml清单文件之外,还需要同时需要在工程res目录下新建filepaths.xml配置。



 
 

<!-- QQ 官方分享SDK 共享路径 --> <root-pathname="opensdk_root"path=""/> <external-files-pathname="opensdk_external"path="Images/tmp"/>

QQ官方SDK v3.3.8.lite及以上依赖特定android v4 support包,请将工程中依赖的android-support-v4.jar版本升级到23以上。例如:将其升级到 android-support-v4 23.4.0。

 
注意

同时集成微信,QQ,新浪微博等平台只需配置一组provider,不要重复配置,但是微信、QQ和新浪微博每个平台都需要进行配置filepaths文件

 

新浪微博

分享7.1.4 SDK后新浪微博SDK不需要在AndroidManifest.xml清单文件中增加activity。provider配置方式请看微信集成部分,

需要在filepath中添加新浪微博官方SDK10.10.0共享路径,< external-files-path name=”share_files” path=”.” / >

升级图

新浪微博SDK升级到分享7.1.4版本及以上,项目compileSdkVersion的版本必须在29以上

 

新浪微博SDK在多图分享时图片资源仅支持共享路径 /data/data/应用包名/files/ 下图片文件

 

 

 

 

权限添加

在AndroidManifest中添加如下权限



 
 

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

纯图分享权限如果需要使用QQ纯图分享或避免其它平台纯图分享的时候图片不被压缩,可以增加以下权限:



 
 

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

Android6.0权限适配请查看你的build.gradle文件,如果 targetSdkVersion小于或等于22,可以忽略这一步,如果大于或等于23,需要做权限的动态申请:



 
 

if(Build.VERSION.SDK_INT>=23){ String[] mPermissionList =newString[]{Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE}; ActivityCompat.requestPermissions(this,mPermissionList,123); }

其中123是requestcode,可以根据这个code判断,用户是否同意了授权。如果没有同意,可以根据回调进行相应处理:



 
 

@Override publicvoid onRequestPermissionsResult(int requestCode, String permissions[],int[] grantResults){ }

 

 

初始化设置

初始化需要在您的Application中调用我们的初始化接口:



 
 

@Override publicvoid onCreate(){ super.onCreate(); UMConfigure.init(this,"5a12384aa40fa3551f0001d1" ,"umeng",UMConfigure.DEVICE_TYPE_PHONE,"");//58edcfeb310c93091c000be2 5965ee00734be40b580001a0 }

更多了解初始化接口可以参照统计SDK文档初始化及通用接口部分内容,init接口调用时机请参考合规指南

 

接下来需要在Application中设置各个平台的appkey:

// 微信设置
PlatformConfig.setWeixin("wxdc1e388c3822c80b","3baf1193c85774b3fd9d18447d76cab0");
PlatformConfig.setWXFileProvider("com.tencent.sample2.fileprovider");
// QQ设置
PlatformConfig.setQQZone("101830139","5d63ae8858f1caab67715ccd6c18d7a5");
PlatformConfig.setQQFileProvider("com.tencent.sample2.fileprovider");
// 企业微信设置
PlatformConfig.setWXWork("wwac6ffb259ff6f66a","EU1LRsWC5uWn6KUuYOiWUpkoH45eOA0yH-ngL8579zs","1000002","wwauthac6ffb259ff6f66a000002");
PlatformConfig.setWXWorkFileProvider("com.tencent.sample2.fileprovider");
// 新浪微博设置
PlatformConfig.setSinaWeibo("3921700954","04b48b094faeb16683c32669824ebdad","http://sns.whalecloud.com");
PlatformConfig.setSinaFileProvider(应用包名.fileprovider);
// 其他平台设置
PlatformConfig.setDing("dingoalmlnohc0wggfedpk");
PlatformConfig.setYixin("yxc0614e80c9304c11b0391514d09f13bf");
PlatformConfig.setAlipay("2015111700822536");
PlatformConfig.setLaiwang("laiwangd497e70d4","d497e70d4c3e4efeab1381476bac4c5e");
PlatformConfig.setTwitter("3aIN7fuF685MuZ7jtXkQxalyi","MK6FEYG63eWcpDFgRYw4w9puJhzDl0tyuqWjZ3M7XJuuG7mMbO");
PlatformConfig.setPinterest("1439206");
PlatformConfig.setKakao("e4f60e065048eb031e235c806b31c70f");
PlatformConfig.setVKontakte("5764965","5My6SNliAaLxEm3Lyd9J");
PlatformConfig.setDropbox("oz8v5apet3arcdy","h7p2pjbzkkxt02a");
PlatformConfig.setYnote("9c82bf470cba7bd2f1819b0ee26f86c6ce670e9b");
 
注意

Andriod 11必须要调用PlatformConfig.setWXFileProvider和PlatformConfig.setQQFileProvider,否则分享本地图片到QQ或微信会失败

 
注意

新浪微博必须统一设置为PlatformConfig.setSinaFileProvider(应用包名.fileprovider);

3.企业微信的参数需要开发者登录企业微信管理后台 https://work.weixin.qq.com/ 进行查看。填写的四个参数分别为:参数1:id (我的企业 企业ID),参数2:Secret (应用管理->你的应用名 Secret),参数3:AgentId(应用管理->你的应用名 AgentId),参数4:schema (应用管理->企业微信授权登录->Android schema)

4.上述代码是在客户端本地授权微信appsecret,我们也支持服务端授权微信appsecret,此功能需求前往友盟+智能认证产品后台页面前往配置,详情可以参考文档。如果应用程序设置了微信的appSecret,则优先使用本地授权。如果应用程序设置微信的appSecret为空字符串””,并且在服务器端配置了微信的appSecret,则使用远程服务器授权

 

签名配置

签名的概念将文件夹中的签名文件放入到工程中,例如我的签名文件是debug.keystore然后增加签名文件的密码:

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

 

然后在buildTypes中将这个signingConfigs配置进去,如下图所示:签名文件如果不加,部分平台的授权会受到影响。

 
 

 

混淆设置

 

-dontshrink
-dontoptimize
-dontwarn com.google.android.maps.**
-dontwarn com.squareup.okhttp.**
-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
-keepattributes EnclosingMethod
-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 class com.umeng.commonsdk.statistics.common.MLog {*;}
-keep class com.umeng.commonsdk.UMConfigure {*;}
-keep class com.umeng.** {*;}
-keep class com.umeng.**
-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.** {
   *;
}
-keep class com.tencent.wxop.** {
   *;
}
-keep class com.tencent.mm.sdk.** {
   *;
}
-dontwarn twitter4j.**
-keep class twitter4j.** { *; }

-keep class com.tencent.** {*;}
-dontwarn com.tencent.**
-keep class com.kakao.** {*;}
-dontwarn com.kakao.**
-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.umeng.socialize.impl.ImageImpl {*;}
-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.** { *; }
-keep class com.android.dingtalk.share.ddsharemodule.** { *; }
-keepattributes Signature
 

 集成中遇到的注意事项

 


1.  android.support.v4.content.FileProvider   === androidx.core.content.

gradle.properties 增加

android.useAndroidX=true
android.enableJetifier=true

2.依赖 使用demo 中的;

3.  仓库
        maven { url "https://dl.bintray.com/thelasterstar/maven/" }
        maven { url 'https://dl.bintray.com/umsdk/release' }

4.tools:replace="android:configChanges 暂时 去掉

5. file_paths  改成  filepaths


6.签名,需要使用release 模式加 签名,因为第三方SDK 规定如此

 

 DEMO 下载

https://download.csdn.net/download/q610098308/16746981

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

恋恋西风

up up up

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值