Coder Social home page Coder Social logo

zhang-han / bmob-android-demo-autoupdate Goto Github PK

View Code? Open in Web Editor NEW

This project forked from bmob/bmob-android-demo-autoupdate

0.0 1.0 0.0 3.2 MB

此案例是演示案例,大家可以看到Bmob的自动更新组件是如何工作的。

Home Page: http://www.bmob.cn

Java 100.00%

bmob-android-demo-autoupdate's Introduction

Bmob Android自动更新组件

=====================

快速入门

添加资源文件

下载SDK提供的res文件夹拷入工程目录下,和工程本身res目录合并。

res文件夹下载地址:http://static.bmob.cn/new/developmentdoc/appdemo/res.zip

这里需要注意的是:

  1. 请不要随便删除其中的文件。
  2. BmobSDK提供的资源文件都以bmob_开头。

配置AndroidManifest.xml

1.打开AndroidManifest.xml,添加SDK需要的权限到标签下:

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

说明:

  • android.permission.WRITE_EXTERNAL_STORAGE 权限允许将下载的apk保存到sd卡中。
  • android.permission.ACCESS_NETWORK_STATE 权限允许检查网络状态,从而根据不同网络环境决定何种下载策略,务必添加该权限。

2.添加渠道到标签下:

<meta-data android:value="Channel ID" android:name="BMOB_CHANNEL"/>

说明:BMOB_CHANNEL用来标注应用推广渠道,不同渠道可以上传不同更新包,您可以使用20位以内的英文和数字为渠道定名,替换value中的Channel ID。如果不添加,将不区分渠道。

3.添加Activity到标签下:

<activity 
            android:name="cn.bmob.v3.update.UpdateDialogActivity"
		  	android:theme="@android:style/Theme.Translucent.NoTitleBar" >
        </activity>

调用自动更新接口

最常见的自动更新模式是:当用户进入应用首页后,如果处于wifi环境则检测更新,如果有更新,弹出对话框提示有新版本,用户点选更新开始下载更新。实现的方法是,在应用程序入口Activity里的OnCreate()方法中调用如下代码:

public void onCreate(Bundle  savedInstanceState) {
    super.onCreate(savedInstanceState);
    BmobUpdateAgent.update(this);
}

考虑到用户流量的限制,目前我们默认在WiFi接入情况下才进行自动提醒。如需要在任意网络环境下都进行更新自动提醒,则请在update调用之前添加以下代码:

BmobUpdateAgent.setUpdateOnlyWifi(false)

创建自动更新表

一行代码轻松搞定AppVersion表:

SDK提供了初始化自动创建AppVersion表的方法,不再需要开发者手动在web端创建。只需要在你使用自动更新功能的地方调用如下代码:

BmobUpdateAgent.initAppVersion(context)

该表的结构如下(如果你的应用中已经存在此表,请删除):

字段名称 字段类型 是否必填 字段说明
update_log String 更新日志
version String 版本名称
version_i Number 版本号
isforce Boolean 是否强制更新
path File Apk文件
target_size String Apk文件大小
platform String 平台,注意:"Android"为安卓平台标示,"ios"为ios平台标示
channel String 渠道标示
android_url String apk市场地址(path字段和本字段必填其中一个)
ios_url String iOS app store地址(如果是ios记录一定要填写)

创建好这个表结构之后就可以新增一些记录,把应用的信息和下载地址(或者上传文件)填写上去,如下图所示:

这里需要注意的是:新添加的数据记录的version_i(对应应用中的version code,如下图)的数值要大于手机中安装的应用的version number,否则无法生效。另外,platform需要根据实际情况填写平台信息。

集成检测

SDK中默认开启了集成检测功能,在调用任意的更新接口后,我们将替您自动检查上述集成过程中2、3两个步骤是否被正确完成。 如果正确完成不会出现任何提示,否则会以如下的toast提示您。

你可以通过调用BmobUpdateAgent.setUpdateCheckConfig(false)来禁用此功能。

toast的含义如下: "Please copy all resources (res/) from SDK to your project!":请检查是不是把res文件夹下所有的资源文件都放到了工程中。 "Please add Permission in AndroidManifest!":请检查上述步骤中的相关权限是否正确添加。 "Please add Activity in AndroidManifest!":请检查上述步骤中的Activity是否正确添加。

强制更新

SDK中为自动更新方式提供了强制更新功能,当开发者开启强制更新功能(即将后台的AppVersion表中的isforce字段置为true)时,客户端调用BmobUpdateAgent.update(context)方法后,更新对话框只保留“立即更新”按钮且不再支持回退操作。

忽略版本更新

SDK中为自动更新方式提供了忽略版本更新功能,当用户勾选”忽略该版“选项时,再次调用BmobUpdateAgent.update(context)则不再出现版本更新对话框。

注:强制更新和忽略版本更新只支持自动更新方式。

其他更新方式

除了在快速开始文档中提到的自动更新之外,Bmob自动更新SDK还支持另外两种场景:手动更新、静默更新。 下面将详细介绍这两种场景的接口及默认行为。

手动更新

许多应用的设置界面中都会有检查更新等类似功能,需要用户主动触发而检测更新。它的默认行为基本和自动更新基本一致。它和自动更新的主要区别是:在这种手动更新的情况下,无论网络状况是否Wifi,无论用户是否忽略过该版本的更新,都可以像下面的示例一样在按钮的回调中发起更新检查,代替update(Context context):

public void onClick(View v) {
    BmobUpdateAgent.forceUpdate(mContext);
}

静默下载更新

当用户进入应用首页后如果处于wifi环境检测更新,如果有更新,后台下载新版本,如果下载成功,则进行通知栏展示,用户点击通知栏开始安装。静默下载过程中如果wifi断开,则会停止下载。实现的方法是:在应用程序入口Activity里的OnCreate()方法中调用如下代码:

public void onCreate(Bundle  savedInstanceState) {
    super.onCreate(savedInstanceState);
    BmobUpdateAgent.silentUpdate(this);
}

Bmob官方信息

官方网址:http://www.bmob.cn

问答社区:http://wenda.bmob.cn

技术邮箱:[email protected]

bmob-android-demo-autoupdate's People

Contributors

heshaoyue avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.