我已于 2021 年停止担任积极主动的 iOS 工程师。目前,我将继续维护这个库以供社区使用,但我不会主动添加新功能。
Siren 将用户当前安装的 iOS 应用版本与 App Store 中当前可用的版本进行比较。
如果有新版本可用,则可以向用户显示语言本地化的提示,告知他们有新版本,并允许他们选择更新应用程序。 或者,Siren 可以通过其他方式通知您的应用程序,例如自定义用户界面。
Siren 基于 语义化版本控制 系统构建。
Rules.AlertType
枚举控制。Swift 版本 | 分支名称 | 是否会继续接收更新? |
---|---|---|
5.5+ | master | 是 |
5.1-5.4 | swift5.4 | 否 |
5.0 | swift5.0 | 否 |
4.2 | swift4.2 | 否 |
4.1 | swift4.1 | 否 |
3.2 | swift3.2 | 否 |
3.1 | swift3.1 | 否 |
2.3 | swift2.3 | 否 |
pod 'Siren' # Swift 5.5+
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift5.4' # Swift 5.1-5.4
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift5.0' # Swift 5.0
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift4.2' # Swift 4.2
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift4.1' # Swift 4.1
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.2' # Swift 3.2
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift3.1' # Swift 3.1
pod 'Siren', :git => 'https://github.com/ArtSabintsev/Siren.git', :branch => 'swift2.3' # Swift 2.3
.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 6)
实现 Siren 非常简单,只需在 AppDelegate.swift
或 SceneDelegate.swift
任一文件中添加两行代码即可
import Siren // Line 1
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey : Any]? = nil) -> Bool {
window?.makeKeyAndVisible()
Siren.shared.wail() // Line 2
return true
}
}
import Siren // Line 1
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
window?.makeKeyAndVisible()
Siren.shared.wail() // Line 2
return true
}
}
Siren 也有大量的自定义选项。 所有示例都可以在示例项目的 AppDelegate 文件中找到。 取消注释您想要测试的示例。
Siren 已本地化为以下语言
阿拉伯语、亚美尼亚语、巴斯克语、中文(简体和繁体)、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、德语、希腊语、希伯来语、匈牙利语、印度尼西亚语、意大利语、日语、韩语、拉脱维亚语、立陶宛语、马来语、挪威语(博克马尔语)、波斯语(阿富汗、伊朗、波斯语)、波兰语、葡萄牙语(巴西和葡萄牙)、罗马尼亚语、俄语、塞尔维亚语(西里尔语和拉丁语)、斯洛文尼亚语、西班牙语、瑞典语、泰语、土耳其语、乌克兰语、乌尔都语、越南语
如果用户的设备设置为支持的语言环境之一,更新消息将以该语言显示。 如果不支持某个语言环境,则消息将以英语显示。
您可能希望更新对话框*始终*以特定语言显示,忽略用户设备特定的设置。 您可以这样启用它
// In this example, we force the `Russian` language.
Siren.shared.presentationManager = PresentationManager(forceLanguageLocalization: .russian)
如果有可用的应用程序更新,Siren 会检查用户设备上的 iOS 版本是否与应用程序更新所需的版本兼容。 例如,如果用户在其设备上安装了 iOS 11,但应用程序更新需要 iOS 12,则不会显示警报。 这解决了关于应用程序更新的*误报*情况。
暂时更改 Xcode 中(在 .xcodeproj
文件中)的版本字符串为比 App Store 中当前可用的版本更旧的版本。 然后,构建并运行你的应用,你应该会看到警告。
如果你目前没有应用在商店中,请将你的 bundleID 更改为商店中已有的 bundleID。 在与此库一起打包的示例应用程序中,我们使用 Facebook 的 Bundle ID:com.facebook.Facebook
。
有时,iTunes JSON 更新速度会快于 App Store CDN,这意味着 JSON 可能会声明已发布新版本的应用程序,但没有通过 App Store 提供新的二进制文件下载。 因此,默认情况下,Siren 会在 JSON 更新后等待 1 天(24 小时)再提示用户更新。 要更改默认设置,请修改 showAlertAfterCurrentVersionHasBeenReleasedForDays
的值。
App Store 审核员将*不会*看到警告。 App Store 中的版本将始终比正在审核的版本旧。
2017 年,Apple 宣布了逐步推出应用更新(即分阶段发布)的能力。 Siren 将继续像过去一样工作,向*所有*用户展示更新模态框。 如果您选择针对特定版本进行分阶段发布,您有几个选择
showAlertAfterCurrentVersionHasBeenReleasedForDays
设置为 7
,Siren 将在最新版本发布 7 天后(即分阶段发布完成后)才提示任何用户。衷心感谢以下人员