1. 程式人生 > >應用寶省流量更新sdk接入指南

應用寶省流量更新sdk接入指南

       app的自動更新,是一個非常重要的功能。而要實現一套更新機制,技術上來說其實很簡單。但對於小公司來說,其實很沒有必要,因為你需要一臺檔案伺服器提供下載,萬一app火了,那這臺文件伺服器的壓力就相當大了。現在有很多做平臺的大公司會有在做這一套自動更新的服務,算是給小公司減輕成本吧。

       以前幾個app用的是友盟的自動更新服務,因為也使用友盟的統計服務,所以就選擇了友盟。但是自從被阿里收購後,友盟的更新服務即將關閉,所以不得不尋求其它方案。 有找到幾家:騰訊的應用寶、360手機助手、百度手機助手 都有提供自動更新的服務,只需整合相應的SDK便可。從中進行了對比,發現應用寶的app上架稽核速度最快,所以建議還是使用應用寶的自動更新服務,這樣更新的下發會更及時。

      下面來講講應用寶自動更新SDK的接入。

      首先要收,騰訊開放平臺的文件確實是個坑,文件的參考價值不是很大,很多還是得靠自己去摸索。按照開放平臺上的接入文件,傳送郵件,獲取到渠道號,並下載sdk,會得到一個jar檔案“tmassistantsdk_selfupdate_v1.0_20151229170816.jar”,將此jar引入專案當中,並按照sdk使用指南進行配置。

AndroidManifest.xml中加入以下許可權和Service

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <service
        android:name="com.tencent.tmdownloader.TMAssistantDownloadService"
        android:exported="false"
        android:process=":TMAssistantDownloadSDKService" />

配置好後進行SDK的初始化,配置好後先簡單的進行更新檢測操作

TMSelfUpdateManager.getInstance().init(getApplicationContext(), "申請到的渠道號", new ITMSelfUpdateListener() {
            @Override
            public void onDownloadAppStateChanged(int i, int i1, String s) {
            }

            @Override
            public void onDownloadAppProgressChanged(long l, long l1) {
            }

            @Override
            public void onUpdateInfoReceived(TMSelfUpdateUpdateInfo tmSelfUpdateUpdateInfo) {
            }
        }, new YYBDownloadListener() {
            @Override
            public void onDownloadYYBStateChanged(String s, int i, int i1, String s1) {
            }

            @Override
            public void onDownloadYYBProgressChanged(String s, long l, long l1) {
            }

            @Override
            public void onCheckDownloadYYBState(String s, int i, long l, long l1) {
            }
        }, null);
        TMSelfUpdateManager.getInstance().checkSelfUpdate();//檢測更新
執行後 發現個問題,老是會報錯,提示找不到類,導致崩潰
I/art(12010): Rejecting re-init on previously-failed class java.lang.Class<com.tencent.tmapkupdatesdk.internal.logic.protocol.jce.AppInfoForUpdate>
E/AndroidRuntime(12010): FATAL EXCEPTION: apkupdate_asyctask
E/AndroidRuntime(12010): Process: com.hikvision.ivms.isp, PID: 12010
E/AndroidRuntime(12010): java.lang.NoClassDefFoundError: com.tencent.tmapkupdatesdk.internal.logic.protocol.jce.AppInfoForUpdate
E/AndroidRuntime(12010): 	at com.tencent.tmapkupdatesdk.internal.logic.a.a(ProGuard:183)
E/AndroidRuntime(12010): 	at com.tencent.tmapkupdatesdk.internal.logic.a.handleMessage(ProGuard:98)
E/AndroidRuntime(12010): 	at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime(12010): 	at android.os.Looper.loop(Looper.java:148)
E/AndroidRuntime(12010): 	at android.os.HandlerThread.run(HandlerThread.java:61)

可能是由於art的問題,但也表示這個SDK多少還是存在著問題會影響使用的。 

谷歌了下應用寶自動更新SDK,發現資料也挺少的,但發現了一個14年老版本,可以在此處下載,引入下載到的jar包“jce.jar”和“TMAssistantSDK_selfUpdate_201407240950.jar”,許可權配置跟上面的一樣,SDK的初始化如下

TMSelfUpdateSDK.getInstance().initTMSelfUpdateSDK(getApplicationContext(), 應用的APP ID, "渠道號",
	new ITMSelfUpdateSDKListener() {
		@Override
		public void OnDownloadYYBStateChanged(String arg0, int arg1, int arg2, String arg3) {
		}
		@Override
		public void OnDownloadYYBProgressChanged(String arg0, long arg1, long arg2) {
		}
		@Override
		public void OnDownloadAppStateChanged(int arg0, int arg1, String arg2) {
		}
		@Override
		public void OnDownloadAppProgressChanged(long arg0, long arg1) {
		}
		@Override
		public void OnCheckNeedUpdateInfo(TMSelfUpdateSDKUpdateInfo arg0) {
		       if (arg0 != null) {
			   StringBuilder sb = new StringBuilder();
			   sb.append("NewApkSize=")
			   .append(arg0.getNewApkSize())
			   .append("NewFeature=")//更新日誌
			   .append(arg0.getNewFeature())
			   .append("PatchSize=")
			   .append(arg0.getPatchSize())
			   .append("Status=").append(arg0.getStatus())
			   .append("UpdateDownloadUrl=")//apk下載地址
			   .append(arg0.getUpdateDownloadUrl())
			   .append("UpdateMethod=")
			   .append(arg0.getUpdateMethod());
			   System.out.println("SelfUpdate " + sb.toString());						                } else {
			   System.out.println("SelfUpdate already latest!!!");
		        }
		}
	});
TMSelfUpdateSDK.getInstance().checkNeedUpdate();


執行後,可以正常檢測到應用寶上的最新版本資訊。如果返回的TMSelfUpdateSDKUpdateInfo為null,則說明已經是最新了。

返回有新版本後,可以自定義進行新版本的提示,並提示進行更新。SDK提供了省流量的更新方式,即使用應用寶進行更新,通過呼叫SDK中的方法進行實現

TMSelfUpdateSDK.getInstance().startSaveUpdate(getApplicationContext());

不過這裡需要說明的是,最好判斷下當前本機是否有安裝應用寶app,如果已安裝,則會自動拉起應用寶並自動進入到我們app的更新介面;如果是沒有安裝應用寶,則會去下載應用寶app,下載安裝完開啟應用寶app後,自動進入我們app的更新介面。判斷應用寶是否安裝的方法如下 

if (TMSelfUpdateSDK.getInstance().checkYYBInstalled() == TMAssistantDownloadSDKTaskState.ALREADY_INSTALLED)
所以,建議在已裝有應用寶的時候,進行呼叫startSaveUpdate進行更新;在未裝有應用寶的時候,通過 返回的UpdateDownloadUrl進行下載apk安裝包進行更新,下載apk的方式可以根據自己的喜好進行實現。這樣不會強制使用者進行應用寶的捆綁安裝。




 

相關推薦

應用流量更新sdk接入指南

       app的自動更新,是一個非常重要的功能。而要實現一套更新機制,技術上來說其實很簡單。但對於小公司來說,其實很沒有必要,因為你需要一臺檔案伺服器提供下載,萬一app火了,那這臺文件伺服器的壓力就相當大了。現在有很多做平臺的大公司會有在做這一套自動更新的服務,算

Android應用市場流量更新(增量升級)原理解析

一、前言最近在看熱修復相關的框架,之前我們已經看過了阿里的Dexposed和AndFix這兩個框架了,不瞭解的同學可以點選這裡進行檢視:Dexposed框架原理解析 和 AndFix熱修復框架原理解析,

增量升級(流量更新)的Android客戶端實現

 By sgwhp (http://blog.csdn.net/sgwhp)轉載請註明出處 用過類似360手機助手應該對省流量更新都很熟悉了。詳細資料可以參考以下兩個部落格: 本文在以上兩篇部落格的基礎上再增加了異常處理,並將生成的so庫和Native程式碼一起打

Unity 接入應用 SDK 即 YSDK 過程中遇到的問題記錄 20180302

遇到的問題先記錄,解決了再更新。1、按照官方步驟接好 SDK,打包初始化是報錯,缺失 ysdk_hackdex.jar     解決方法:將 YSDK_Android_1.3.8_907.jar 解壓,把 assets 目錄裡的檔案複製到 Unity 的 Plugins/An

Android-SDK接入-YSDK(應用1.7.0)

  SDK接入-YSDK(應用寶1.7.0)-2021-01-07      大家好,近期在做多渠道打包平臺,會定期遇到第三方SDK升級,所以很被動的是,我們也要跟隨他們的步伐,及時升級。否則將面臨第三方開發者站無法過審的問題。之前我整理了 CodeReview 系列的部落格,今天開始會抽

Android接入百度自動更新SDK

一:前言 公司的app,上傳到百度應用市場,然後說必須要接入百度的自動更新sdk才能上架,於是從百度官網上去下載jar包,下載的時候必須要帶上資料統計,如果使用自動的jar包,還需要帶上廣告聯盟,坑爹啊,有木有。我下載下來把其他無關的jar包根so檔案刪掉了.把百度的dem

工作總結—支付SDK接入之如何填坑

    支付寶SDK相對於微信支付SDK來說簡單很多,但是有個坑(SDK是.framework包,本人是製作遊戲SDK的,不能單純跟以前IOS應用接入一樣,只將SDK導進進製作的遊戲SDK裡,在遊戲專案中還得將alipay.framework再導進去一次,不然總會報X86,

JAVA專案接入騰訊應用YSDK平臺之道具直購支付模式接入詳解

前言道具直購模式:簡單的說就是Q幣(人民幣)兌換遊戲中的貨幣。可以先看下官網介紹,  在看下面這篇部落格,  這時, 你就應該理解掌握了80%,  最後關鍵的20%,  再看我下面的介紹,  就可以完美的接入成功!官方網址:1.米大師介紹——道具直購模式介紹 - 騰訊開放平臺

速度超快更流量JAVA 3.1版明日釋出

  手機淘寶手機將在2011年3月17日釋出淘寶手機購物客戶端JAVA 3.1版,相比之前的版本,有一些改進。介面更加簡潔、易用、省流量,購物功能更加強大,支付更加方便。淘寶手機客戶端JAVA 3.1版是淘寶網官方推出的提供給使用者使用的手機購物軟體,適用於大部分支援JAVA

[支付]手機網站支付快速接入

tps alt wke mba resp pan 新版 字符 手機網站支付 參考開發文檔:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.FjX7f6&treeId=193&art

Jenkins+docker實現應用發布和更新

jenkins docker Jenkins+docker實現應用發布Jenkins:centos6.5 ip:192.168.83.84Docker:centos7.2 ip:192.168.83.60 一、安裝Jenkins最新版:sudo wget -O /etc/yum.repos.d/jen

MaCaNDROIDsTUDIO更新sDk

mac 5% ongl studio aid andro contact android aca %E5%85%B3%E4%BA%8ECONTaCT%E7%9A%84%E6%9D%A5%E7%94%B5%E5%BD%92%E5%B1%9E%E5%9C%B0 http://

小米電視支付SDK接入air坑爹之路

ppi roi 登錄 pos data track 電視 cat cati 1. air的包名在生成android後會加入一個air的前綴變為air.***.***.mibox。包名與appid和appkey必須相相應才行,不然會一直返回40000錯誤 2. 加入

ios下微信瀏覽器如何喚醒app?app已上架應用

roi eply android 應用寶 地址 微信瀏覽器 ply andro 下載地址 android下可以通過在應用寶微下載地址後面加參數&android_schema=‘應用schema‘來實現,ios下如何實現?

通達OA應用中心使用手冊(腳本編寫指南)

cit ted 點擊 ble 計算 文本 ppp 必須 組合 腳本編寫必備基礎 1.1 什麽是腳本 腳本是一段 PHP 代碼,可以被應用中心執行以實現特定功能。應用中心支持通過腳本 實現以下功能: 自定義計算函數。 自定義提取觸發

創藍萬數平臺接入指南

img fff nag 提示 賬號 ron log 成功 mage 註冊:未登錄狀態下,創藍萬數官網任意界面,右上角點擊【免費註冊】 或在萬數官網任意界面,右上角點擊【萬數控制臺】登錄頁面點擊【註冊新賬號】進入註冊資料填寫頁面,根據提示填寫信息若已有雲通訊賬號,則無需註冊,

開源應用框架BitAdminCore:更新日誌20180817

pos 增刪改查 lan git slist 框架源碼 homepage 技術分享 源碼 索引 NET Core應用框架之BitAdminCore框架應用篇系列 框架演示:http://bit.bitdao.cn 框架源碼:https://github.com/che

Android實戰——輕松集成百度自動更新SDK,只需3步

appid config log .html img 演示 sso 自動更新 客戶 輕松集成百度自動更新SDK,只需3步 集成百度自動更新SDK前提: 1、需要上線作品進行測試,本人用自己上線的作品進行了測試。 2、需要上線的作品defaultConfig中的versi

關於微信分享SDK接入,包括其他App一些分享接入,比如Zalo

1、背景 這次做了Zalo的SDK接入,可以分享到Zalo朋友,以及Zalo朋友圈   2、那麼對於具體的分享   3、接入SDK,其實等於接入了Zalo的許可權,以及Zalo在SDK中封裝的一個Acitivty   4、傳值過去,就是通

eclipse更新SDK報錯:Failed to fetch URL http://dl-ssl.google.com/android/repository/repository-1

Android 開發使用eclipse時,更新sdk報錯:Failed to fetch URL http://dl-ssl.google.com/android/repository/repository-1 原因是由於國內網路訪問谷歌伺服器時“受阻”,所有需要。。。。 解決方法如下: 第一