美文网首页
友盟自动集成

友盟自动集成

作者: 猿小蔡 | 来源:发表于2020-05-21 15:00 被阅读0次

    第一步

    在项目的根目录下

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

    相关文章

      网友评论

          本文标题:友盟自动集成

          本文链接:https://www.haomeiwen.com/subject/ftnzohtx.html