友盟自动集成

602 阅读4分钟

第一步

在项目的根目录下

repositories {
        google()
        jcenter()
        //加上这句
        maven { url 'https://dl.bintray.com/umsdk/release' }
    }
allprojects {
    repositories {
        google()
        jcenter()
        maven { url "https://jitpack.io" }
        //加上这句
        maven { url 'https://dl.bintray.com/umsdk/release' }
    }
}

第二步

在APP的build.gradle下添加如下代码,本人只集成了微信分享,需要别的可以自行添加

// 友盟基础组件
    implementation 'com.umeng.umsdk:common:2.0.0'
    implementation 'com.umeng.umsdk:utdid:1.1.5.3'
    // 友盟分享
    implementation 'com.umeng.umsdk:share-core:6.9.4'
    implementation 'com.umeng.umsdk:share-wx:6.9.4'
    //implementation 'com.umeng.sdk:shareboard-widget:6.9.2'
    // 友盟统计
    implementation 'com.umeng.umsdk:analytics:8.0.0'

需要注意的是,如果在别的地方有了utdid,比如阿里的热修复框架,就不要这个了。

第三步

在自己的报名下新建一个目录,取名为wxapi,在里面新建一个activity,取名为WXEntryActivity,继承WXCallbackActivity。完整代码如下

/**
 * 微信客户端回调activity示例
 */
public class WXEntryActivity extends WXCallbackActivity {

    
}

第四步

在清单文件注册这个activity

<activity
            android:name=".wxapi.WXEntryActivity"
            android:configChanges="keyboardHidden|orientation|screenSize"
            android:exported="true"
            android:launchMode="singleTask"
            android:screenOrientation="portrait"
            //xx.xxx.xxxx为自己的包名
            android:taskAffinity="xx.xxx.xxxx"
            android:theme="@android:style/Theme.Translucent.NoTitleBar"/>

需要注意的是一定要加上 android:launchMode="singleTask"与android:taskAffinity="xx.xxx.xxxx",不然会出现意想不到的效果。

第五步

初始化友盟组件。在自定义的application中的oncreate中

//初始化
UMConfigure.init(this, "5cb5869b61f5643dca0001fe", "umeng", UMConfigure.DEVICE_TYPE_PHONE, "");
//自动统计数据
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);

最后就是看文档分享的操作了,我是自己的分享样式,所以没有集成友盟的分享样式组件,需要的可以自己看下官方文档手动集成。集成基本上就这么多了。

第六步

分享

以下分享都是不带样式的。以下的分享代码都来自官方文档,放心使用,至于其他的,比如分享枚举类型等,可到官网查看。友盟开发者文档

文本

纯文本分享如下:

new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();

图片

在使用ShareAction的时候,调用withMedia可以设置一个UMImage(图片分享),UMImage的构建有如下几种形式

UMImage image = new UMImage(ShareActivity.this, "imageurl");//网络图片
UMImage image = new UMImage(ShareActivity.this, file);//本地文件
UMImage image = new UMImage(ShareActivity.this, R.drawable.xxx);//资源文件
UMImage image = new UMImage(ShareActivity.this, bitmap);//bitmap文件
UMImage image = new UMImage(ShareActivity.this, byte[]);//字节流

推荐使用网络图片和资源文件的方式,平台兼容性更高。对于部分平台,分享的图片需要设置缩略图,缩略图的设置规则为:

UMImage thumb =  new UMImage(this, R.drawable.thumb);
image.setThumb(thumb);

用户设置的图片大小最好不要超过250k,缩略图不要超过18k,如果超过太多(最好不要分享1M以上的图片,压缩效率会很低),图片会被压缩。用户可以设置压缩的方式:


image.compressStyle = UMImage.CompressStyle.SCALE;//大小压缩,默认为大小压缩,适合普通很大的图
image.compressStyle = UMImage.CompressStyle.QUALITY;//质量压缩,适合长图的分享
压缩格式设置
image.compressFormat = Bitmap.CompressFormat.PNG;//用户分享透明背景的图片可以设置这种方式,但是qq好友,微信朋友圈,不支持透明背景图片,会变成黑色

创建好UMImage之后调用分享即可,如下所示:

new ShareAction(ShareActivity.this).withText("hello").withMedia(image).share();

现在支持多图分享的平台有两个,一个是新浪微博一个是QQ空间,都是最多上传9张图片,新浪微博超过9张不会上传,QQ空间超过九张会上传QQ空间相册。

   new ShareAction(ShareDetailActivity.this).withMedias(imagelocal,imagelocal,imagelocall)
                        .setPlatform(share_media)
                        .withText("hello")
                        .setCallback(shareListener).share();

链接

分享链接可以使用UMWeb进行分享:

UMWeb  web = new UMWeb(Defaultcontent.url);
        web.setTitle("This is music title");//标题
        web.setThumb(thumb);  //缩略图
        web.setDescription("my description");//描述

然后调用将这个参数设置到ShareAction中:

new ShareAction(ShareActivity.this)
    .withMedia(web)
    .share();

视频

视频只能使用网络视频:

UMVideo video = new UMVideo(videourl);
video.setTitle("This is music title");//视频的标题
video.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//视频的缩略图
video.setDescription("my description");//视频的描述

音乐

音乐只能使用网络音乐:

UMusic music = new UMusic(musicurl);//音乐的播放链接
music.setTitle("This is music title");//音乐的标题
music.setThumb("http://www.umeng.com/images/pic/social/chart_1.png");//音乐的缩略图
music.setDescription("my description");//音乐的描述
music.setmTargetUrl(Defaultcontent.url);//音乐的跳转链接

建立好之后可以进行分享:

new ShareAction(ShareActivity.this).withMedia(music).share();

GIF

目前只有微信好友分享支持Emoji表情,其他平台暂不支持

UMEmoji emoji = new UMEmoji(this,"http://img5.imgtn.bdimg.com/it/u=2749190246,3857616763&fm=21&gp=0.jpg");
emoji.setThumb(new UMImage(this, R.drawable.thumb));
new ShareAction(ShareActivity.this)
.withMedia(emoji).share();

微信小程序

目前只有微信好友支持小程序分享,朋友圈,收藏及其他平台暂不支持:

UMMin umMin = new UMMin(Defaultcontent.url);
//兼容低版本的网页链接
umMin.setThumb(imagelocal);
// 小程序消息封面图片
umMin.setTitle(Defaultcontent.title);
// 小程序消息title
umMin.setDescription(Defaultcontent.text);
// 小程序消息描述
umMin.setPath("pages/page10007/xxxxxx");
//小程序页面路径
umMin.setUserName("gh_xxxxxxxxxxxx");
// 小程序原始id,在微信平台查询
new ShareAction(ShareDetailActivity.this)
.withMedia(umMin)
.setPlatform(share_media)
.setCallback(shareListener).share();