友盟
<h3>1、添加友盟仓库</h3>
<p>在工程build.gradle配置脚本中buildscript和allprojects段中添加【友盟+】SDK新maven仓库地址。</p>
<pre><code>buildscript {
repositories {
maven { url 'https://repo1.maven.org/maven2/' }
}
}
allprojects {
repositories {
maven { url 'https://repo1.maven.org/maven2/' }
}
}</code></pre>
<h3>2、添加依赖</h3>
<pre><code>implementation 'com.inveno.library:umeng:1.0.8-SNAPSHOT'
//如果需要用到微信分享模块,则需要添加以下依赖
implementation'com.tencent.mm.opensdk:wechat-sdk-android-without-mta:6.8.0'</code></pre>
<h3>3、混淆</h3>
<pre><code>#-----------------umeng start----------------------------
-keep class com.umeng.** {*;}
#//您如果使用了稳定性模块可以加入该混淆
-keep class com.uc.** {*;}
-keepclassmembers class * {
public <init> (org.json.JSONObject);
}
-keepclassmembers enum * {
public static **[] values();
public static ** valueOf(java.lang.String);
}
#//SDK 9.2.4及以上版本自带oaid采集模块,不再需要开发者再手动引用oaid库,所以可以不添加这些混淆
-keep class com.zui.** {*;}
-keep class com.miui.** {*;}
-keep class com.heytap.** {*;}
-keep class a.** {*;}
-keep class com.vivo.** {*;}
#-----------------umeng end----------------------------
#-----------------分享start-----------------
-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
#-----------------分享end-----------------</code></pre>
<h3>4、新建WXEntryActivity并继承WXCallbackActivity,放到<包名>.wxapi下(可选,微信分享模块)</h3>
<pre><code>class WXEntryActivity : WXCallbackActivity() {
}</code></pre>
<h3>5、在清单文件注册微信回调activity(可选,微信分享模块)</h3>
<pre><code><!--注册activity-->
<manifest>
<!--适配targetSDK >= 30-->
<queries>
<package android:name="com.tencent.mm" />
</queries>
<application>
<!--注册activity-->
<activity
android:name=".wxapi.WXEntryActivity"
android:label="@string/app_name"
android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:exported="true"
android:taskAffinity="${applicationId}"
android:launchMode="singleTask"/>
</application>
</manifest></code></pre>
<h3>6、在application的onCreat方法初始化</h3>
<pre><code>//预初始化友盟(官方要求)
UMengManager.preInit(applicationContext,"appKey","channel")
//初始化友盟(须获取到手机权限后再调用)
UMengManager.init(applicationContext,"appKey","channel",isDebug)
//配置微信参数(可选,微信分享模块)
UMengManager.initWXConfig(applicationContext,"appId","screct")</code></pre>
<h3>7、使用</h3>
<pre><code>//获取oaid(异步)
UMConfigure.getOaid(this){ it: String!
oaid = it
}
//上报事件
val params = hashMapOf<String,Any>()
UMengManager.onEvent("eventId",params)
//获取微信信息(微信分享模块)
UMShareHepler.requestWXUserInfo { it: UMShareHepler.Data ->
val accessToken = it.accessToken
val openId = it.openId
val nick = it.nick
val headUrl = it.headUrl
val unionId = it.unionId
}
//分享回调(微信分享模块)
val listener = object : UMShareListener{
override fun onStart(p0: SHARE_MEDIA?) {
}
override fun onResult(p0: SHARE_MEDIA?) {
}
override fun onError(p0: SHARE_MEDIA?, p1: Throwable?) {
}
override fun onCancel(p0: SHARE_MEDIA?) {
}
}
//分享纯文本(微信分享模块)
UMShareHepler.shareText("text",listener)
//分享图文(微信分享模块)
val data = ...//可以是资源id、file、网络地址、bitmap等
val image = UMImage(context,data)
UMShareHepler.shareTextWithImg("text",image,listener)
//分享链接(微信分享模块)
val title = "" //标题
val desc = "" //描述
val data = ...//略缩图资源,可以是资源id、file、网络地址、bitmap等
val thumb = UMImage(context,data) //略缩图
val url = "" //链接地址
UMShareHepler.shareUrl(title,desc,thumb,url,listener)</code></pre>