应用宝省流量更新sdk接入指南

原创 2016年08月13日 19:14:35

转载请声明原文地址:http://blog.csdn.net/sagittarius1988/article/details/52200815       

       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的方式可以根据自己的喜好进行实现。这样不会强制用户进行应用宝的捆绑安装。

转载请声明原文地址:http://blog.csdn.net/sagittarius1988/article/details/52200815






版权声明:本文为博主原创文章,未经博主允许不得转载。

Android:应用宝省流量更新

应用宝省流量更新(SDK),是应用宝提供给开发者轻松实现应用省流量更新的功能,可以帮助开发者缩短更新过程,提高应用下载量。在每次应用升级更新时,只需更新部分数据而无需下载完整大小的安装包,帮用户节省了...
  • doris_d
  • doris_d
  • 2016年04月07日 20:40
  • 4525

Android:应用宝省流量更新

应用宝省流量更新(SDK),是应用宝提供给开发者轻松实现应用省流量更新的功能,可以帮助开发者缩短更新过程,提高应用下载量。在每次应用升级更新时,只需更新部分数据而无需下载完整大小的安装包,帮用户节省了...
  • doris_d
  • doris_d
  • 2016年04月07日 20:40
  • 4525

增量升级(省流量更新)的Android客户端实现

By sgwhp (http://blog.csdn.net/sgwhp)转载请注明出处 用过类似360手机助手应该对省流量更新都很熟悉了。详细资料可以参考以下两个博客: 浅析androi...
  • sgwhp
  • sgwhp
  • 2013年06月02日 23:58
  • 11093

Android应用市场省流量更新(增量升级)原理解析

一、前言最近在看热修复相关的框架,之前我们已经看过了阿里的Dexposed和AndFix这两个框架了,不了解的同学可以点击这里进行查看:Dexposed框架原理解析 和 AndFix热修复框架原理解析...
  • jiangwei0910410003
  • jiangwei0910410003
  • 2017年01月09日 18:42
  • 5273

应用宝SDK接入总结

应用宝SDK接入总结应用宝sdk是众所周知的难接入,经过这次接入发现其接入难点主要在以下三个方面,其一,文档杂乱,部分地方语焉不。其二,微信与手Q部分参数缠连不清,部分出处不明。其三,腾讯技术客服支持...
  • u012719153
  • u012719153
  • 2015年09月14日 18:42
  • 7286

游戏sdk接入教程:接入应用宝渠道SDK之一登录篇

官方文档及SDK的下载地址为:http://wiki.open.qq.com/wiki/YSDK%E4%B8%8B%E8%BD%BD   在接入之前,需先在应用宝后台创建游戏,获取一些接入参数。   ...
  • kasimshi
  • kasimshi
  • 2017年06月26日 11:05
  • 730

应用宝YSDK支付接入技术细节

前言应用宝是出了名的坑,主要体现在: 文档杂乱繁多 信息不全或描述模糊 文档格式不规范 技术支持很不及时 并且可以明显察觉到为了兼容QQ和微信,应用宝的接入规范有诸多不合理...
  • zzt46245
  • zzt46245
  • 2016年12月26日 10:52
  • 2910

Android:接入小米流量变现SDK,检查更新SDK,统计SDK

作为一个忠实的米粉,准备给自己的app接入小米家的各种sdk,首选当然是检查更新SDK,后来不断完善接入了统计、MIAD_SDK。 首先你需要一个小米的账号,申请开发者认证,流程就不说了,官网什么的...
  • u011343735
  • u011343735
  • 2016年12月10日 18:28
  • 675

应用宝ysdk接入心得

Android-unity 游戏sdk接入之应用宝ysdk对于应用宝ysdk的接入 自身的感觉 还是比较简单的,只是刚开始的时候感觉很可怕,都是听别人说多难多难,在没接触的时候就给自己造成了心理的阴影...
  • qq_35581716
  • qq_35581716
  • 2016年12月01日 14:46
  • 4208

检查版本更新,跳转到腾讯应用宝进行下载

检查版本更新,跳转到腾讯应用宝进行下载 private void intit_getClick() { if (isAvilible(this, "com.tencent.android.qqdown...
  • qq_31344287
  • qq_31344287
  • 2016年09月01日 15:02
  • 3644
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:应用宝省流量更新sdk接入指南
举报原因:
原因补充:

(最多只允许输入30个字)