LaunchGate
LaunchGate可以让用户知道您的应用的更新何时可用。
您还可以阻止旧版本的用户访问应用,这在严重错误或需要用户更新应用的安全问题出现时非常有用。
此外,您可以使用LaunchGate在启动时显示远程配置的消息给用户,这也可以用于暂时阻止用户访问应用(例如在后台维护期间)。
需要Android版本吗?
运气不错!LaunchGate是与它的Android对应版本并行开发的,即Gandalf。
安装
LaunchGate可通过CocoaPods获取。要安装它,只需将以下行添加到Podfile中
pod "LaunchGate"
使用方法
LaunchGate在启动时下载并解析部署在服务器上的JSON配置文件,然后执行相应的操作。
默认情况下,LaunchGate期望一个类似以下的配置文件:
{
"ios": {
"requiredUpdate": {
"minimumVersion": "1.1",
"message": "An update is required to continue using this app."
}
}
}
如果您想使用不同于默认的配置结构,您完全可以使用!下面有说明,如何提供自定义解析器。
启用LaunchGate
- 将其导入到您的
AppDelegate
。 - 实例化它,传递配置文件的位置和您的应用的App Store URI。
- 最后,在
applicationDidBecomeActive
或sceneDidBecomeActive
中调用launchGate?.check()
,如果您使用基于场景的窗口。
import LaunchGate
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
lazy var launchGate = LaunchGate(
configURI: "https://www.example.com/config.json",
appStoreURI: "itms-apps://itunes.apple.com/us/app/yourapp/id123456789"
)
func applicationDidBecomeActive(application: UIApplication) {
launchGate?.check()
}
}
或者您已经设置好应用程序场景Manifest
import LaunchGate
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func sceneDidBecomeActive(_ scene: UIScene) {
launchGate?.check()
}
}
配置文件
当调用check()
时,LaunchGate加载JSON配置文件。使用此文件,您可以在您的应用程序中触发几种不同的行为。
"为什么JSON中的顶层有
ios
对象?为什么有必要?"顶层
"ios"
对象的存在是因为LaunchGate是与Gandalf并行创建的,它是其Android的对应项目。作为跨平台移动开发者,我们理解得到两个完全独立的iOS & Android库满足相同的功能要求是多么令人烦恼。通过同时开发LaunchGate(iOS)和Gandalf(Android),我们能够为构建和维护跨平台应用的团队提供一个在iOS和Android上都应具有相似功能的解决方案。跨平台配置示例
{
"android": {
"requiredUpdate": {
"minimumVersion": "1.1",
"message": "An update is required to continue using this app."
}
},
"ios": {
"requiredUpdate": {
"minimumVersion": "1.1",
"message": "An update is required to continue using this app."
}
}
}
必需更新
通过包含一个requiredUpdate
对象,您可以指定一个最小应用程序版本以及将显示给那些安装版本过旧的用户的消息。带有旧版本的用户在更新之前将无法使用应用程序。
场景:您先前版本的应用程序存在严重错误或安全漏洞,您已在当前版本中修复了这些问题,但仍需要阻止用户继续使用较旧的受损害版本。
在本例中,当打开应用程序时,应用版本低于“1.1”的用户将看到一个带有“更新”按钮的警告对话框,该按钮将带他们进入App Store下载最新版本。
可选更新
通过包含一个optionalUpdate
对象,您可以指定App Store中应用的当前版本以及显示给用户的消息,以鼓励他们更新应用程序。
用户可以忽略可选更新,并且可选更新不会阻止用户使用应用程序。此外,每个版本只会向用户显示一次可选更新对话框。这样用户就不会每次打开应用程序时都不断地受到打扰。
场景:您已发布对应用程序的重大更新,并希望鼓励那些未启用自动更新的用户进行升级。
{
"ios": {
"optionalUpdate": {
"optionalVersion": "1.2",
"message": "A new version of the app is available."
}
}
}
警告消息
最后,除了提供与特定应用程序版本和更新相关的功能外,您还可以在用户打开应用程序时使用LaunchGate向用户显示一条信息性消息。
阻止性警告
“阻止”警告("blocking": true
)是一种在用户打开应用程序时显示给用户的通知,不会给用户任何进入应用程序的选项。
重要→只要将blocking
设置为true
,用户将无法使用您的应用程序,所以请尽快删除或禁用阻止性警告。
场景:您的应用程序依赖于一个暂时因维护而关闭的后端网络服务,您不希望应用程序用户受到影响。
{
"ios": {
"alert": {
"message": "We are currently performing server maintenance. Please try again later.",
"blocking": true
}
}
}
非阻塞警报
与非阻塞更新对话框类似,非阻塞警报信息每条只显示一次。
场景:您的应用程序依赖一个后端Web服务,该服务出现间歇性连接问题,您需要提醒用户应用程序体验可能降低。
{
"ios": {
"alert": {
"message": "We are currently working to resolve intermittent web service issues. We apologize if your app experience is affected.",
"blocking": false
}
}
}
自定义配置解析器
如果需要使用与默认配置JSON对象不同的内容,可以编写自己的解析器,使其符合LaunchGateParser
协议,并在调用check()
前将其设置为启动门实例。
请参阅示例项目。
作者
Dan Trenz (@dtrenz),由Detroit Labs提供
许可证
LaunchGate 在Apache License,Version 2.0许可下可用。更多详细信息请参阅LICENSE文件。