CN107943493A - 一种基于iOS***静默修复已上线App中问题的方法和装置 - Google Patents
一种基于iOS***静默修复已上线App中问题的方法和装置 Download PDFInfo
- Publication number
- CN107943493A CN107943493A CN201610892307.6A CN201610892307A CN107943493A CN 107943493 A CN107943493 A CN 107943493A CN 201610892307 A CN201610892307 A CN 201610892307A CN 107943493 A CN107943493 A CN 107943493A
- Authority
- CN
- China
- Prior art keywords
- files
- app
- server
- reached
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Transfer Between Computers (AREA)
Abstract
本发明提供一种基于iOS***下静默修复已上线App中问题的方法和装置,其中该方法包括:开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器;当所述App启动时向所述服务器发起请求,如果所述服务器存在所述JS文件,则将所述服务器上的所述JS文件下载至执行所述App的客户端;当使用对应于所述App的所述特定问题对应的功能时,加载并执行所述JS文件。通过本发明提供的基于iOS***下静默修复已上线App中问题的方法和装置,能够无需发布新版本App,并且通过下载JS脚本修复已上线App的Bug,并且在整个过程中无需用户进行任何操作,因此对于用户来说是无感知修复,因此提升了用户体验。
Description
技术领域
本发明涉及计算机软件领域,具体涉及一种基于iOS***下静默修复已上线App中问题的方法和装置。
背景技术
移动App在上线发布之后,总会出现一些Bug,导致用户刚升级到新版本就出现crash,严重影响用户体验。
在现有技术中,开发者往往需要重新开发一个新版本的App,并且让用户重新安装才能解决出现的问题。
另外,iOS应用程序上架到AppStore需要等待苹果公司的审核,审核时间周期漫长。待用户重新下载升级之后才能完成此次Bug的修复工作,但是,这种方式极其容易导致用户流失,这对企业来说影响非常严重。
发明内容
有鉴于此,本发明的目的是提供一种基于iOS***静默修复已上线App中问题的方法和装置,以解决为了修复已上线App出现的Bug而依赖新版本App发布的问题,即当已发布的App出现问题时,不需要发布新版本即可静默解决用户已安装于移动客户端的App的使用问题。
本发明的技术方案是提供一种基于iOS***下静默修复已上线App中问题的方法,其中所述方法包括:
开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器;
当所述App启动时向所述服务器发起请求,如果所述服务器存在所述JS文件,则将所述服务器上的所述JS文件下载至执行所述App的客户端;
当使用对应于所述App的特定问题的功能时,加载并执行所述JS文件。
可选地,该方法还包括:在开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器的步骤之前,将所述JS文件按照预设命名规则进行命名,计算所述JS文件对应的第一MD5值,并将所述JS文件进行RSA加密。
可选地,该方法还包括:在所述App启动时,将所述服务器上的所述JS文件下载至执行所述App的客户端的步骤之后,
对所述JS文件进行RSA解密,计算所述JS文件的第二MD5值,并根据所述第二MD5值与所述第一MD5值进行验证;
如果RSA解密失败和/或MD5验证未通过,则将所述JS文件视为无效文件;
如果RSA解密成功且MD5验证通过,则对所述JS文件进行格式校验,以确认所述JS文件符合JS转OC的语法规则。
本发明还提供一种基于iOS***下静默修复已上线App中问题的装置,所述装置包括:
OC与JS开发模块,用于开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器;
JS文件下载模块,用于当所述App启动时向所述服务器发起请求,如果所述服务器存在所述JS文件,则将所述服务器上的所述JS文件下载至执行所述App的客户端;
JS文件执行模块,用于当使用对应于所述App的特定问题的功能时,加载并执行所述JS文件。
可选地,该装置还包括:文件加密模块,用于将所述JS文件按照预设命名规则进行命名,计算所述JS文件对应的第一MD5值,并将所述JS文件进行RSA加密。
可选地,该装置还包括:文件解密模块,用于对所述JS文件进行RSA解密,计算所述JS文件的第二MD5值,并根据所述第二MD5值与所述第一MD5值进行验证;
如果RSA解密失败和/或MD5验证未通过,则将所述JS文件视为无效文件;
如果RSA解密成功且MD5验证通过,则对所述JS文件进行格式校验,以确认所述JS文件符合JS转OC的语法规则。
通过本发明提供的基于iOS***下静默修复已上线App中问题的方法和装置,能够无需发布新版本App,并且通过下载JS脚本修复已上线App的Bug,并且在整个过程中无需用户进行任何操作,因此对于用户来说是无感知修复,因此提升了用户体验。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:
图1为本发明一实施例的基于iOS***下静默修复已上线App中问题的方法流程示意图;
图2为本发明一实施例的基于iOS***下静默修复已上线App中问题的装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
本领域技术技术人员知道,本发明的实施方式可以实现为一种***、装置、设备、方法或计算机程序产品。因此,本公开可以具体实现为以下形式,即:完全的硬件、完全的软件(包括固件、驻留软件、微代码等),或者硬件和软件结合的形式。
示例性方法
下面请参考图1对本发明示例性的实施方式的基于iOS***下静默修复已上线App中问题的方法进行介绍。需要注意的是,上述应用场景仅是为了便于理解本发明的精神和原理而示出,本发明的实施方式在此方面不受任何限制。相反,本发明的实施方式可以应用于适用的任何场景。
如图所示,该方法包括:
步骤S101:开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器;
步骤S102:当所述App启动时向所述服务器发起请求,如果所述服务器存在所述JS文件,则将所述服务器上的所述JS文件下载至执行所述App的客户端;
步骤S103:当使用对应于所述App的特定问题的功能时,加载并执行所述JS文件。
可选地,该方法还包括:在开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器的步骤之前,将所述JS文件按照预设命名规则进行命名,计算所述JS文件对应的第一MD5值,并将所述JS文件进行RSA加密。
可选地,该方法还包括:在所述App启动时,将所述服务器上的所述JS文件下载至执行所述App的客户端的步骤之后,对所述JS文件进行RSA解密,计算所述JS文件的第二MD5值,并根据所述第二MD5值与所述第一MD5值进行验证;
如果RSA解密失败和/或MD5验证未通过,则将所述JS文件视为无效文件;
如果RSA解密成功且MD5验证通过,则对所述JS文件进行格式校验,以确认所述JS文件符合JS转OC的语法规则。
实施例
下面结合一个具体实施例对本发明进行具体描述,然而值得注意的是该具体实施例仅是为了更好地描述本发明,并不构成对本发明的不当限定。
OC是动态语言,在OC上所有的方法调用、类的生成都通过Objective-C Runtime在运行时进行,我们可以通过类名、方法名反射得到相应的类和方法,也可以在运行时替换某个类的方法,也可以新注册一个类,为类添加方法,这是runtime所具有的特性。
所以App在运行时可以通过类名、方法名调用到任何OC的方法,替换任何类的实现以及新增任意类。其实在OC运行时的上层,开发者声明的方法名、类名,在运行时都是当成字符串去处理的。字符串的标识有类名、方法名,不同的标示做不同的处理。在iOS7之后,iOS***支持运行JavaScript脚本语言,使得JS和OC无缝衔接,基于OC语言Runtime的特性,JS传递字符串给OC,OC通过Runtime接口调用和替换OC的方法,以达到我们静默修复问题的目的。
在本地用JavaScript语言开发针对解决已上线App的特定问题的JS文件,对该JS文件按照服务端定义的命名规则进行命名,计算开发完的JS文件的第一MD5值,并利用RSA加密算法对该JS文件进行加密,然后将该第一MD5值和已经MD5加密后的JS文件上传至服务端。
App在启动时都会向服务端发起Https协议请求获取服务端上的JS文件,并且该请求仅随着每次启动仅获取一次。因为服务端会记录当前该App的请求记录,并且如果服务端存在JS文件,则会将该JS文件自动下载至客户端。
客户端会对该JS文件进行RSA解密,并计算解密后的该JS文件的第二MD5值。然后,将该第二MD5值与服务端中的该第一MD5值进行验证操作,以判断下载的该JS文件与上传的JS文件是否一致。
如果RSA解密失败和/或MD5验证未通过,则将该JS文件视为无效文件;
如果RSA解密成功且MD5验证通过,则对该JS文件进行格式校验,以确认该JS文件符合JS转OC的语法规则,最后将该JS文件加载到该App运行内存中。
此时,因为只是加载了该JS文件,但是该JS文件不会做任何操作。在App运行期间,如果发现某个功能是存在Bug的,并且该JS文件的作用就是修复这个Bug,那么该App在执行到这个功能时,该JS文件中的代码会把当前功能所属类的方法替换掉,直接执行JS代码。直到此时,解析该JS代码内容,实现方法的调用、替换以及新增方法的实施起到修复作用,并完成静默修复线上该App的Bug。
在本发明一实施例中,MD5是为了保证文件的唯一性,防止本地文件被他人修改,而RSA为非对称加密,加密算法轻量且安全,通过公钥加密私钥解密的加解密方式,保证文本内容的安全性。
本发明还提供一种基于iOS***下静默修复已上线App中问题的装置,所述装置2包括:
OC与JS开发模块21,用于开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器;
JS文件下载模块22,用于当所述App启动时向所述服务器发起请求,如果所述服务器存在所述JS文件,则将所述服务器上的所述JS文件下载至执行所述App的客户端;
JS文件执行模块23,用于当使用对应于所述App的特定问题的功能时,加载并执行所述JS文件。
可选地,该装置2还包括:文件加密模块24,用于将所述JS文件按照预设命名规则进行命名,计算所述JS文件对应的第一MD5值,并将所述JS文件进行RSA加密。
可选地,该装置2还包括:文件解密模块25,用于对所述JS文件进行RSA解密,计算所述JS文件的第二MD5值,并根据所述第二MD5值与所述第一MD5值进行验证;
如果RSA解密失败和/或MD5验证未通过,则将所述JS文件视为无效文件;
如果RSA解密成功且MD5验证通过,则对所述JS文件进行格式校验,以确认所述JS文件符合JS转OC的语法规则。
由于本发明提供的基于iOS***下静默修复已上线App中问题的装置是上述方法对应的装置,故在此不再赘述。
通过本发明提供的基于iOS***下静默修复已上线App中问题的方法和装置,能够无需发布新版本App,并且通过下载JS脚本修复已上线App的Bug,并且在整个过程中无需用户进行任何操作,因此对于用户来说是无感知修复,因此提升了用户体验。
此外,尽管在附图中以特定顺序描述了本发明方法的操作,但是,这并非要求或者暗示必须执行全部所示的操作才能实现期望的结果。附加地或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,和/或将一个步骤分解为多个步骤执行。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种基于iOS***下静默修复已上线App中问题的方法,其特征在于,所述方法包括:
开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器;
当所述App启动时向所述服务器发起请求,如果所述服务器存在所述JS文件,则将所述服务器上的所述JS文件下载至执行所述App的客户端;
当使用对应于所述App的特定问题的功能时,加载并执行所述JS文件。
2.根据权利要求1所述的方法,其特征在于,还包括:在开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器的步骤之前,将所述JS文件按照预设命名规则进行命名,计算所述JS文件对应的第一MD5值,并将所述JS文件进行RSA加密。
3.根据权利要求1所述的方法,其特征在于,还包括:在所述App启动时,将所述服务器上的所述JS文件下载至执行所述App的客户端的步骤之后,对所述JS文件进行RSA解密,计算所述JS文件的第二MD5值,并根据所述第二MD5值与所述第一MD5值进行验证;
如果RSA解密失败和/或MD5验证未通过,则将所述JS文件视为无效文件;
如果RSA解密成功且MD5验证通过,则对所述JS文件进行格式校验,以确认所述JS文件符合JS转OC的语法规则。
4.一种基于iOS***下静默修复已上线App中问题的装置,其特征在于,所述装置包括:
OC与JS开发模块,用于开发针对解决已上线App的特定问题的JS文件,并将所述JS文件上传至服务器;
JS文件下载模块,用于当所述App启动时向所述服务器发起请求,如果所述服务器存在所述JS文件,则将所述服务器上的所述JS文件下载至执行所述App的客户端;
JS文件执行模块,用于当使用对应于所述App的特定问题的功能时,加载并执行所述JS文件。
5.根据权利要求4所述的装置,其特征在于,还包括:文件加密模块,用于将所述JS文件按照预设命名规则进行命名,计算所述JS文件对应的第一MD5值,并将所述JS文件进行RSA加密。
6.根据权利要求4所述的装置,其特征在于,还包括:文件解密模块,用于对所述JS文件进行RSA解密,计算所述JS文件的第二MD5值,并根据所述第二MD5值与所述第一MD5值进行验证;
如果RSA解密失败和/或MD5验证未通过,则将所述JS文件视为无效文件;
如果RSA解密成功且MD5验证通过,则对所述JS文件进行格式校验,以确认所述JS文件符合JS转OC的语法规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610892307.6A CN107943493A (zh) | 2016-10-12 | 2016-10-12 | 一种基于iOS***静默修复已上线App中问题的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610892307.6A CN107943493A (zh) | 2016-10-12 | 2016-10-12 | 一种基于iOS***静默修复已上线App中问题的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107943493A true CN107943493A (zh) | 2018-04-20 |
Family
ID=61928878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610892307.6A Pending CN107943493A (zh) | 2016-10-12 | 2016-10-12 | 一种基于iOS***静默修复已上线App中问题的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107943493A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108809960A (zh) * | 2018-05-23 | 2018-11-13 | 北京五八信息技术有限公司 | 一种文件上传及下载方法、装置、设备、***及存储介质 |
CN109101254A (zh) * | 2018-07-20 | 2018-12-28 | 江苏满运软件科技有限公司 | 一种热修复方法及设备 |
CN110389753A (zh) * | 2019-06-06 | 2019-10-29 | 五八有限公司 | 原生应用的链式调用方法、装置、电子设备及存储介质 |
CN110489124A (zh) * | 2019-07-12 | 2019-11-22 | 浙江口碑网络技术有限公司 | 源代码执行方法、装置、存储介质及计算机设备 |
CN113282435A (zh) * | 2021-05-19 | 2021-08-20 | 维沃移动通信有限公司 | 应用异常的处理方法和电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005321897A (ja) * | 2004-05-06 | 2005-11-17 | Fujitsu Ltd | データ通信処理プログラムおよびウイルス駆除プログラム取得処理プログラム |
CN105743984A (zh) * | 2016-03-11 | 2016-07-06 | 中国建设银行股份有限公司 | 自动更新移动应用的方法、设备及*** |
-
2016
- 2016-10-12 CN CN201610892307.6A patent/CN107943493A/zh active Pending
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2005321897A (ja) * | 2004-05-06 | 2005-11-17 | Fujitsu Ltd | データ通信処理プログラムおよびウイルス駆除プログラム取得処理プログラム |
CN105743984A (zh) * | 2016-03-11 | 2016-07-06 | 中国建设银行股份有限公司 | 自动更新移动应用的方法、设备及*** |
Non-Patent Citations (1)
Title |
---|
IMMORTALSUMMER: "JSPatch线上bug实时修复", 《JSPATCH线上BUG实时修复 - 简书,HTTPS://WWW.JIANSHU.COM/P/92E4174627F7》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108809960A (zh) * | 2018-05-23 | 2018-11-13 | 北京五八信息技术有限公司 | 一种文件上传及下载方法、装置、设备、***及存储介质 |
CN109101254A (zh) * | 2018-07-20 | 2018-12-28 | 江苏满运软件科技有限公司 | 一种热修复方法及设备 |
CN110389753A (zh) * | 2019-06-06 | 2019-10-29 | 五八有限公司 | 原生应用的链式调用方法、装置、电子设备及存储介质 |
CN110389753B (zh) * | 2019-06-06 | 2024-01-23 | 五八有限公司 | 原生应用的链式调用方法、装置、电子设备及存储介质 |
CN110489124A (zh) * | 2019-07-12 | 2019-11-22 | 浙江口碑网络技术有限公司 | 源代码执行方法、装置、存储介质及计算机设备 |
CN113282435A (zh) * | 2021-05-19 | 2021-08-20 | 维沃移动通信有限公司 | 应用异常的处理方法和电子设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107943493A (zh) | 一种基于iOS***静默修复已上线App中问题的方法和装置 | |
CN104346167B (zh) | 生成应用渠道包的方法及装置 | |
WO2017166446A1 (zh) | 漏洞修复方法和装置 | |
CN105786538B (zh) | 基于安卓***的软件升级方法和装置 | |
US20150378714A1 (en) | Providing Context-Specific Software Updates to Client Applications | |
US20140196020A1 (en) | Generating software updates | |
US20090193407A1 (en) | Methods and Systems for Automatic Patch Creation for Client Updates | |
CN104363264A (zh) | 移动终端软件的多渠道sdk接入***及方法 | |
CN111078262B (zh) | 应用的热修复方法和装置 | |
CN104063225B (zh) | 锁屏主题开发方法及装置 | |
US11237949B2 (en) | Systems and methods for on-demand container-based development environments | |
US20160291952A1 (en) | Processing, modification, distribution of custom software installation packages | |
CN106201607A (zh) | 一种软件版本的升级方法及设备 | |
WO2021228143A1 (zh) | 小程序启动方法、签名方法、装置、服务器及介质 | |
CN106131612A (zh) | 安卓app动态加载资源功能模块的方法及*** | |
CN107896244A (zh) | 一种版本文件的分发方法、客户端及服务器 | |
AU2019240576B2 (en) | System and method for certifying and deploying instruction code | |
BRPI1103615A2 (pt) | Método e sistema para substituir uma cópia ilegítima de um programa de software com uma cópia legítima, e, segmento de software | |
CN106709281B (zh) | 补丁发放和获取方法、装置 | |
CN106682491B (zh) | 应用下载方法和装置 | |
CN106845162B (zh) | 一种重签名方法及装置 | |
US11645086B2 (en) | System and method for implementing a filesystem agent management solution | |
JP2018523218A (ja) | コンパイルされたソフトウェア内の機械命令を修正する方法およびシステム | |
CN107508846B (zh) | 应用客户端的更新方法和***及终端设备 | |
CN103701922A (zh) | Paas平台的应用***署的方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20180420 |