小米應用商店檢查更新SDK(下文簡寫為『檢查更新SDK』)幫助您的用戶盡快獲得最新版本的應用!輕松增加『自動檢查更新』功能,通過小米應用商店的CDN服務,快速的把最新版應用推送給用戶!
功能特點:
·支持增量更新:檢查更新SDK會自動識別用戶版本,并提供diff包給用戶,加速省流
·一次發(fā)布全面更新:只要在小米應用商店發(fā)布新版,所有的用戶都可以收到新版發(fā)布提醒。
·標準Android SDK:無論用戶是否使用MIUI,都可以收到更新提醒。
·方便省心:無需考慮配置服務器,部署CDN等問題,小米應用商店免費提供。
·支持基于設備屬性和API-Level的系統(tǒng)版本過濾,會將新版推送給支持的設備。
·獨家支持:在MIUI系統(tǒng)上支持調用系統(tǒng)商店更新,升級成功率更高!
立即開始集成:
1.添加sdk依賴
//添加依賴
compile'mi-appstore:xiaomi-update-sdk:4.0.3'
2.在AndroidManifest.xml文件中添加SDK信息
2.1添加檢查更新需要的權限
打開AndroidManifest.xml,添加SDK需要的權限到<manifest>標簽下:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="com.xiaomi.market.sdk.UPDATE"/>
2.2添加receiver
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="your_package_name.selfupdate.fileprovider" //請將your_package_name替換成您應用的包名.
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/xiaomi_update_sdk_file_paths" />
</provider>
3.調用檢查更新接口
在需要檢查更新的Activity里的OnCreate()方法中調用
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
XiaomiUpdateAgent.update(this);
}
4.API說明
4.1 XiaomiUpdateAgent
4.1.1 public static void update(Context context)
/**
* 觸發(fā)檢查更新, 根據BuildType是否為Debug(BuildConfig.DEBUG=true)決定是否使用沙盒測試
* @param context 會以WeakRerference的形式存在, 若檢查更新結果返回時, context已銷毀,
* 此次檢查更新被忽略
*/
public synchronized static void update(Context context)
4.1.2 public synchronized static void update(Context context,boolean debug)
* 觸發(fā)檢查更新
* @param context 會以WeakRerference的形式存在,若檢查更新結果返回時,context已銷毀,
* 此次檢查更新被忽略
* @param debug 是否使用沙盒測試
*/
public synchronized static void update(Context context, boolean debug)
4.1.3 public static void setUpdateAutoPopup(boolean autoPopup)
/**
* 設置檢查到應用可更新時是否自動彈窗,當設置為true時且updte方法傳入的Context是Activity,則在檢查到更新時自動彈窗提醒
* 若設置為false,或者update接口的Context不是Activity時,則需要應用通過setUpdateListener注冊檢查結果回調,并自己處理檢查結果
* @param autoPopup 設置有可更新包時,是否自動彈出升級對話框,默認為true
*/
public static void setUpdateAutoPopup(boolean autoPopup)
4.1.4 public static void setCheckUpdateOnlyWifi(boolean checkUpdateOnlyWifi)
/**
*設置是否僅在wifi下檢查更新
* param checkUpdateOnlyWifi是否僅wifi下檢查更新,默認為false
*/
public static void setCheckUpdateOnlyWifi(boolean checkUpdateOnlyWifi)
4.1.4 public static void setUpdateListener(XiaomiUpdateListener updateListener)
設置檢查到更新時的回調接口。僅當setUpdateAutoPopup(false)時,才生效。
4.1.5 public static int getSDKVersion()
/**
*返回當前sdk版本號
* return sdk版本號
*/
public static int getSDKVersion()
4.1.6 public static void setUseInternationalHost(boolean useInternational)
/**
*設置是否使用海外地區(qū)apk.
*應用商店支持同一個包名在不同中國和海外分發(fā)不同的apk.
*設置此參數,可強制使用國內或者海外地區(qū)apk,此功能主要用于非miui系統(tǒng).
*
* param useInternational是否使用海外地區(qū),國際版miui系統(tǒng)默認為true,否則默認為false
*/
public static void setUseInternationalHost(boolean useInternational)
4.1.7 public static void arrange()
/**
*觸發(fā)下載安裝流程。
*當setUpdateAutoPopup(true)時,且update方法Context是Activity,則會在用戶點擊升級對話框的升級按鈕時,觸發(fā)下載安裝。
*當setUpdateAutoPopup(false)時,或update方法Context不是Activity時,檢查到更新后,需要應用主動調用此方法觸發(fā)下載安裝.
*根據是設備上是否存在小米應用商店,此方法有兩種不同的結果:
*1)存在小米應用商店時,會跳轉到應用商店中該應用的詳情頁,需要用戶手動點擊升級按扭,后續(xù)下載安裝由應用商店自動完成,無需應用再操作
*2)不存在小米應用商店時,會使用系統(tǒng)下載管理器下載,并在下載完成后調起設備的包安裝器,需要用戶手動點擊包安裝器的升級按鈕,才能觸發(fā)安裝
*/
public static void arrange()
4.2 public class UpdateStatus
檢查更新返回碼:
/**
* 有可更新版本
*/
public static final int STATUS_UPDATE = 0;
/**
* 無可更新版本
*/
public static final int STATUS_NO_UPDATE = 1;
/**
* 無wifi連接,當設置了僅wifi檢查且當前無wifi時返回此錯誤碼
*/
public static final int STATUS_NO_WIFI = 2;
/**
* 檢查更新時無網絡連接
*/
public static final int STATUS_NO_NET = 3;
/**
* 檢查更新失敗,主要是由于網絡故障或服務器異常等
*/
public static final int STATUS_FAILED = 4;
/**
* 獲取本地apk信息失敗
*/
public static final int STATUS_LOCAL_APP_FAILED = 5;
4.3 public class UpdateResponse
檢查結果信息
/**
*更新日志
*/
public String updateLog;
/**
*版本名稱
*/
public String versionName;
/**
*版本號
*/
public int versionCode;
/**
*下載地址
*/
public String path;
/**
*安裝包大小
*/
public long apkSize;
/**
*安裝包md5
*/
public String apkHash;
/**
*安裝包增量大小.sdk會根據本地apk和服務器apk的diff,下載增量包,并合成最終apk
*/
public long diffSize;
4.4 public interface XiaomiUpdateListener
檢查更新回調接口,用于接收檢查更新結果,僅在setUpdateAutoPopup(false)時有效
4.4.1 void onUpdateReturned(int updateStatus,UpdateResponse updateInfo)
/**
*檢查更新結果回調
* param updateStatus參考4.2 UpdateStatus
* param updateInfo參考4.3 UpdateResponse
*/
void onUpdateReturned(int updateStatus,UpdateResponse updateInfo);