《HarmonyOS:领航者说》技术公开课来啦,大咖分享、实战解码,不容错过 了解详情
写点什么

AppHub:绕过苹果审核机制更新 iOS App

  • 2015-08-18
  • 本文字数:1045 字

    阅读完需:约 3 分钟

为了保证应用程序的合法性和安全性,苹果公司对每一款应用程序设定了严格的审查制度。每一个软件在发布之前都会经历一段时间的机器或人工审核阶段。这个时间短则几天,多达数周。对于敏捷软件开发团队而言,他们经常面临上一个版本还在审查中,一个新的版本已经完成修改的情况。为了解决如此尴尬的局面,毕业于 MIT 的 Matt Arbesfeld 联合其好友设计了 AppHub ,使得面向 iOS 系统的 React Native 应用能够快速更新。接下来,本文就对 AppHub 进行简要介绍。

首先,作为 Facebook React.js Conf 2015 会议上推出的项目,React Native 利用开源 JavaScript 库和 React.js 进行 iOS 和 Android 原生应用的开发。其优势在于提高了代码和模块的可重用性,并使得代码从服务器端动态更新成为可能。目前,Facebook 已经将 React Native 用于生产环境,并将其进行开源,代码依托在 GitHub 中。

正是基于 React Native 的诸多特性,AppHub 实现了快速更新 React Native 应用的功能。那么,究竟如何利用 AppHub 服务实现应用的快速更新呢?首先,应用开发人员需要下载并解压用于 iOS 的 AppHub SDK,并将其添加到应用程序中。具体做法为:把下载的 AppHub.framework 放入到 Xcode 项目;选择“Copy items to destination’s group folder”复选框;在 Link Binary With Library 的编译阶段添加 libz.dylib;把应用连接到 AppHub。接下来,开发人员就可以不断的使用 dashboard 或者 REST API 把更新发送到 AppHub 服务器中。

在 AppHub 中,开发人员为每一个移动应用程序都创建了一个 App。这个 App 拥有唯一的应用 ID,用来配置 SDK。此外,该 App 会保留移动应用的多个版本。开发人员利用 AppHub 的 dashboard 可以对这些版本进行配置和部署。服务器自动探测 App 的配置,把新的代码替换到到应用中,从而实现客户端应用的自动更新。目前,AppHub 所支持客户端操作系统为 iOS 8.0+,所支持 React Native 库的版本为 v0.7.0+。另外,就开发者所关心的 AppHub 是否是否被苹果公司所允许这一问题,AppHub 官网表示,苹果公司在开发者协议里特别允许了这种做法。本质上,AppHub 应用和 React Native 应用基本相同。而 React Native 应用已被证明是可以被苹果所接受的。因此,AppHub 这种做法肯定也会被苹果公司所接受。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群)。

2015-08-18 08:224927
用户头像

发布了 268 篇内容, 共 131.6 次阅读, 收获喜欢 24 次。

关注

评论

发布
暂无评论
发现更多内容

Rust从0到1-高级特性-宏

rust 高级特性 Macros

学会这5种JS函数继承方式,前端面试你至少成功50%

华为云开发者联盟

面试 大前端 js 继承 函数继承

LeetCode题解:897. 递增顺序搜索树,栈,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

颇具年代感的《JMeter中文操作手册》

FunTester

Jmeter 性能测试 自动化测试 接口测试 FunTester

【VueRouter 源码学习】第五篇 - 两种路由模式的设计

Brave

源码 vue-router 9月日更

模块(三)如何设计出合理的架构

我是一只小小鸟

从 CI_CD 到 DevOps

飞算JavaAI开发助手

DevOps 自动化 基础软件

学习Linux tar 命令:最简单也最困难

华为云开发者联盟

Linux 文件 Linux tar tar命令 存档

朋友圈架构设计

XP

终于,基础软件领域的行业盛会来了!

Jessie

开源 云原生 基础软件 中间件 #数据库

TLS协议分析 (五) handshake协议 证书与密钥交换

OpenIM

搞懂现代Web端即时通讯技术一文就够:WebSocket、socket.io、SSE

JackJiang

websocket 即时通讯 IM

【LeetCode】分割平衡字符串Java题解

Albert

算法 LeetCode 9月日更

如何在AI工程实践中选择合适的算法?

博文视点Broadview

TLS协议分析 (三) record协议

OpenIM

【Flutter 专题】54 图解基本生命周期

阿策小和尚

Flutter 小菜 0 基础学习 Flutter Android 小菜鸟 9月日更

解读顶会ICDE’21论文:利用DAEMON算法解决多维时序异常检测问题

华为云开发者联盟

华为云数据库 时序数据 深度神经网络算法 DAEMON 轨迹分析

TLS协议分析 (四) handshake协议概览

OpenIM

使用GO语言实现Mysql数据库CURD

Regan Yue

数据库 Go 语言 9月日更

带你认识数据库视图对象,下次不要再认成“表”了

华为云开发者联盟

数据库 sql 对象 视图 GaussDB(DWS)

从分子层面雕刻肌肉,新数学模型预测锻炼肌肉最优方式

脑极体

初恋永远想不到的性能架构(朋友圈)

人工智能~~~

直播预告:京东云DevOps与JFrog制品库的融合

京东科技开发者

DevOps 制品库管理 运维开发

Vue进阶(壹佰):当前页面刷新并重载页面数据

No Silver Bullet

Vue 9月日更

Retrofit源码解读HTTP

Changing Lin

android 9月日更

GetX代码生成IDEA插件,超详细功能讲解(透过现象看本质)

小呆呆666

从源码角度分析 MyBatis 工作原理

vivo互联网技术

sql mybatis JDBC ORM

模块七作业

秀聪

架构实战营

架构实战营 - 模块七作业

Julian Chu

架构实战营

微型博客开发项目,手动创建导航组件的新增页面

梦想橡皮擦

9月日更

Vue进阶(九十九):页面锚点至顶部

No Silver Bullet

Vue 9月日更

AppHub:绕过苹果审核机制更新iOS App_移动_张天雷_InfoQ精选文章