腾讯Bugly 仿ios自定义更新Dialog

 1.简介    

   最近算是把这个腾讯的Bugly给好好的整了一下,包括日志崩溃上报啊还有内测版本的更新等,也是遇到了蛮多的坑,借这篇博客呢也好好的总结一下,给自己提一个醒的同时,也是希望能够帮助处于学习此SDK而遇到些许问题的同学。

2.运行效果

      完全自定义的dialog哦,仿IOS效果还不错吧。我抽离出了2个方法,用于application中进行初始化sdk,还有一个用于具体的进行app更新请求操作。

腾讯Bugly 仿ios自定义更新Dialog_第1张图片

3.具体操作步骤

1.登入Bugly官网 并完成对相关应用的注册等基本操作

2.将release包上传创建特定的策略以及相关更新提示

腾讯Bugly 仿ios自定义更新Dialog_第2张图片

腾讯Bugly 仿ios自定义更新Dialog_第3张图片

 腾讯Bugly 仿ios自定义更新Dialog_第4张图片

3. 自定义DialogUI 以及设定自定义高级策略

    下面直接偷个懒啦,代码都给出来了,而且有注释。

     对照着官网上的 api一起看:https://bugly.qq.com/docs/user-guide/advance-features-android-beta/?v=20160824161206#ui

public class BuglyHelper {
    /**
     * 将这里替换为你自己申请的APPID
     */
    public static final String APP_ID = "47fb49b672";
    private static  class BuglyHelperHolder{
        private static final BuglyHelper MINSTANCE = new BuglyHelper();
    }

    private BuglyHelper(){

    }

    public static  BuglyHelper getInstance(){
        return BuglyHelperHolder.MINSTANCE;
    }

    /**
     * app中进行初始化以及一些配置
     * @param context
     */
    public void initBuglyApp(Context context){
        /*
         * true表示app启动自动初始化升级模块; false不会自动初始化;
         * 开发者如果担心sdk初始化影响app启动速度,可以设置为false,
         * 在后面某个时刻手动调用
         */
        Beta.autoInit = false;

        /*
         * true表示初始化时自动检查升级; false表示不会自动检查升级,需要手动调用Beta.checkUpgrade()方法;
         */
        Beta.autoCheckUpgrade = false;

        /*
         * 设置升级检查周期为60s(默认检查周期为0s),60s内SDK不重复向后台请求策略);
         */
        Beta.upgradeCheckPeriod = 60 * 1000;
        /*
         * 设置启动延时为1s(默认延时3s),APP启动1s后初始化SDK,避免影响APP启动速度;
         */
        Beta.initDelay = 1000;
        /*
         * 设置通知栏大图标,largeIconId为项目中的图片资源;
         */
        Beta.largeIconId = R.drawable.ic_launcher_background;
        /*
         * 设置状态栏小图标,smallIconId为项目中的图片资源Id;
         */
        Beta.smallIconId = R.drawable.ic_launcher_background;
        /*
         * 设置更新弹窗默认展示的banner,defaultBannerId为项目中的图片资源Id;
         * 当后台配置的banner拉取失败时显示此banner,默认不设置则展示“loading“;
         */
        Beta.defaultBannerId = R.drawable.ic_launcher_background;
        /*
         * 设置sd卡的Download为更新资源保存目录;
         * 后续更新资源会保存在此目录,需要在manifest中添加WRITE_EXTERNAL_STORAGE权限;
         */
        Beta.storageDir = Environment
                .getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);

        Beta.upgradeDialogLayoutId = R.layout.upgrade_dialog;

        /*
         * 已经确认过的弹窗在APP下次启动自动检查更新时会再次显示;
         */
        Beta.showInterruptedStrategy = true;

        Beta.enableNotification = false;

        /*
         * 用于去除弹出的tips这里不是很需要 看你们具体的需求了啊 
         */
        Beta.strToastYourAreTheLatestVersion = "";
        Beta.strToastCheckingUpgrade = "";

        /*
         * 只允许在MainActivity上显示更新弹窗,其他activity上不显示弹窗; 不设置会默认所有activity都可以显示弹窗;
         */
        Beta.canShowUpgradeActs.add(MainActivity.class);

        Bugly.init(context, APP_ID, true);
    }

    /**
     * 进行更新
     * @param context
     */
    public void doUpdateNow(Context context){
        Beta.init(context,true);
        Beta.checkUpgrade();
    }
}

 4.注意的坑

1 . 自定义UI布局时一定要把文档所提及的那5个tag给完整,即便是你不需要那么也要写出来,设置为宽高0dp或者不可见,不然找不到会报错

2. 需要自己去设置弹出框的背景颜色和显示区的白色

3. bugly开发者平台后台要设置自定义UI的策略且发布版本时最好只启动一个策略,因为话说时更新最新的版本,但是官方api说的很清楚是根据随机的策略进行的。

5.项目地址下载

     大家可以直接把我这个module引入过去就可以使用了。而且该aar内是默认支持崩溃日志的上传的。

     https://github.com/crazyzhangxl/BuglyDemo   

你可能感兴趣的:(优秀开源框架使用)