Siren 6.1.3

Siren 6.1.3

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最后发布2024年5月
SPM支持 SPM

Arthur Ariel SabintsevAaron Brager 维护。



Siren 6.1.3

  • Arthur Ariel Sabintsev

Siren🚨

当您的应用的新版本可用时通知用户并提示他们升级。

Travis CI Status Swift Support CocoaPods SwiftPM Compatible Accio supported


目录


元数据

关于

《Siren》用于检测用户当前安装的iOS应用版本与App Store当前可用的版本。

如果可用新版本,可以向用户展示语言本地化的警告,告知他们新版本信息,并给他们提供更新应用的选择。或者,Siren可以通过其他方式,例如自定义用户界面,通知您的应用。

是基于语义版本系统构建的。

  • 规范语义版本使用三位数字版本系统(例如,1.0.0)
  • Siren还支持两位数字版本(例如,1.0)和四位数字版本(例如,1.0.0.0)

功能

当前功能

  • 兼容iOS 13+和tvOS 13+
  • 支持CocoaPods和Swift Package Manager(参见安装说明
  • 三种类型的警报(参见截图
  • 高度自定义的展示规则(参见实现示例
  • 支持40多种语言的本地化(参见本地化
  • 设备兼容性检查(参见设备兼容性

截图

  • 左侧图片强制用户更新应用程序。
  • 中间图片为用户提供了更新应用程序的选项。
  • 右侧图片为用户提供了跳过当前更新的选项。
  • 这些选项由 Rules.AlertType 枚举控制。

端口

  • Objective-C (iOS)
    • Harpy
    • Siren是从Harpy移植过来的,因为Siren和Harpy由同一开发者维护。
    • 截至2018年12月,Harpy已经弃用,以Siren取而代之。
  • Java (Android)
  • React Native (iOS)

安装和集成

安装说明

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

CocoaPods

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

Swift Package Manager

.Package(url: "https://github.com/ArtSabintsev/Siren.git", majorVersion: 6)

实现示例

在应用程序中将 Siren 实现,简单如在 pinggaiSceneDelegate.swift 中添加两行代码。

AppDelegate.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
    }
}

SceneDelegate.swift 示例

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
    }
}

海狼也提供了丰富的自定义选项。所有示例都可以在示例项目中的 AppDelegate 文件中找到。取消注释你想要测试的示例。


设备特定检查

本地化

Siren支持以下语言

阿拉伯语、亚美尼亚语、巴斯克语、中文(简体和繁体)、克罗地亚语、捷克语、丹麦语、荷兰语、英语、爱沙尼亚语、芬兰语、法语、德语、希腊语、希伯来语、匈牙利语、印度尼西亚语、意大利语、日语、韩语、拉脱维亚语、立陶宛语、马来语、挪威语(博克马尔)、波斯语(阿富汗、伊朗、波斯)、波兰语、葡萄牙语(巴西和葡萄牙)、罗马尼亚语、俄语、塞尔维亚语(西里尔和拉丁)、斯洛文尼亚语、西班牙语、瑞典语、泰语、土耳其语、乌克兰语、乌尔都语、越南语

如果用户的设备设置为支持的区域之一,更新消息将显示在该语言中。如果区域不受支持,则消息将以英语显示。

你可能希望更新对话框始终以特定语言显示,忽略用户的设备特定设置。你可以这样启用:

// In this example, we force the `Russian` language.
Siren.shared.presentationManager = PresentationManager(forceLanguageLocalization: .russian)

设备兼容性

如果有应用更新可用,海狼会检查用户的设备上的iOS版本是否与更新所需版本兼容。例如,如果用户在其设备上安装了iOS 11,但应用更新需要iOS 12,则不会显示警报。这解决了应用更新的假阳性情况。


测试

本地测试 Siren

临时将 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 Review

App Store 审查员将 不会 看到该警告。App Store 中的版本总是比正在审查的版本更早。

分阶段发布

2017年,苹果公司宣布了逐步滚动推出应用程序更新的能力(即分阶段发布)。Siren将继续按照过去的操作进行,向所有用户显示更新模态。如果您选择参与特定版本的分阶段发布,您有几个选择

  • 您可以将Siren配置为正常。分阶段发布将继续自动更新应用程序。因为所有用户都可以还筐从App Store手动直接更新您的应用程序,因此Siren将忽略分阶段发布并提示用户更新。
  • 您可以将showAlertAfterCurrentVersionHasBeenReleasedForDays设置为7,然后Siren将在最新版本发布后7天(分阶段发布完成后),不再提示任何用户。
  • 您可以使用您自己的API/后端逻辑远程禁用Siren,直到发布完成。

鸣谢

特别感谢

深深的致谢和感谢送给以下人士

  • Aaron Brager,因为他在2015年激励我,并帮助我构建Siren的初始概念(基于Harpy),如果没有他,Siren可能永远不会被构建。
  • 感谢Harpy的所有贡献者在2012-2015年间帮助构建了功能集,这些功能集是Siren第一个版本的基础。
  • 感谢Siren的所有贡献者让Siren如此强大和没有错误。

作者

Arthur Ariel Sabintsev