NStackSDK是NStack后端软件开发的配套软件包。
什么是NStack?
有关NStack的更多信息,请参阅NStack文档。
要使用NStack后端本地化功能的全部功能,您需要
- NStackSDK(此存储库中的SDK)
- LocalizationManager(此SDK的子依赖项,无需单独获取,通过CocoaPods或Carthage安装NStackSDK时随SDK提供)
- NStack Localizations Generator
有关更多详细信息,请参阅下文中的安装和使用。如果您正在将NStack更新到5,请参阅迁移指南。
📦 安装
CocoaPods
pod 'NStackSDK', '~> 5.1.4'
Carthage
# Swift 5
github "nstack-io/nstack-ios-sdk" ~> 5.0
- 运行
carthage update --platform ios --cache-builds
来安装新添加的SDK - 这将构建
NStackSDK
和LocalizationManager
- 将这2个框架添加到您的项目中(如果您不确定如何操作,请遵循官方Carthage说明)
Swift Package Manager
Swift 包管理器支持正在开发中,您可以使用 feature/spm-support
分支来尝试它。
💻 使用方法
入门
我们假设您已经通过 CocoaPods 或 Carthage 安装了 NStackSDK(请参阅 安装)。
-
访问 最新的 nstack-localizations-generator 版本,下载最新的 nstack-
localizations-generator.bundle.zip
文件,解压缩并将它复制到${SRCROOT}/${TL_PROJ_ROOT_FOLDER}/Resources/NStack/
。这将从构建脚本中引用,因此位置必须与脚本中的位置匹配。不要将其包含到您的 Xcode 项目中。 -
在您的项目中在其编译源代码之前添加一个新的运行脚本阶段,并将此脚本 放入其中
-
在您的 Xcode 项目中创建一个
NStack.plist
文件。确保它与脚本中指定的位置匹配(如果没有手动更改,那么是${SRCROOT}/${TL_PROJ_ROOT_FOLDER}/Resources/NStack/NStack.plist
)。使用您的 NStack 应用程序的值添加APPLICATION_ID
和REST_API_KEY
<key>APPLICATION_ID</key> <string>...</string> <key>REST_API_KEY</key> <string>...</string>
-
确保您的文件夹结构和由脚本指定的路径相匹配。否则,翻译步骤将失败。请参阅 示例项目。在运行脚本之前必须创建文件夹。
-
进行彻底的清洁构建(cmd+option+shift+k,然后 cmd+b)以获取语言 json 文件并生成本地化类;这将为您的应用程序中的每种语言下载一个
Localizations_<locale>.json
文件,并创建或重新生成Localizations.swift
和SKLocalizations.swift
文件 -
将包含
Localizations.swift
、SKLocalizations.swift
和Localizations_<locale>.json
文件的翻译文件夹添加到您的项目中。请确保它们包含到您的应用程序目标中。 -
通过在您的
AppDelegate.swift
中添加此方法来在您的应用程序中设置 NStackSDK:private func setupNStack(with launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) { var nstackConfig = Configuration(plistName: "NStack", environment: .production, // You can switch here based on your app's current environment localizationClass: Localizations.self) nstackConfig.updateOptions = [.onDidBecomeActive] NStack.start(configuration: nstackConfig, launchOptions: launchOptions) NStack.sharedInstance.localizationManager?.updateLocalizations() }
并在
application_:didFinishLaunchingWithOptions:
方法中调用它 -
使用
lo.<section>.<key>
访问您的文本;例如lo.defaultSection.close
功能
有关可用的功能和它们的作用的概述,请参阅文档中的 功能概述。
本地化
完成以上安装和基本使用步骤后,所有翻译将通过lo
变量提供。例如:lo.login.forgotPassword
,其中login
是部分,forgotPassword
是从nstack的键。例如:
@IBOutlet weak var forgotPasswordButton: UIButton! {
didSet {
forgotPasswordButton.setTitle(lo.login.forgotPassword, for: .normal)
}
}
从NStack 4.0版本开始,项目内部有其他方式分配翻译。
label1.text = lo.defaultSection.successKey
----
label2.localize(for: "default.successKey")
----
label3.localize(for: skl.defaultSection.successKey)
----
label4 <=> "default.successKey"
----
label5 <=> skl.defaultSection.successKey
在Swift 5.1及以上版本中,您还可以使用NSLocalizable
属性包装器。
@IBOutlet @NSLocalizable("default.successKey") var label6: UILabel!
----
@IBOutlet @NSLocalizable(skl.defaultSection.successKey) var label7: UILabel!
响应
响应允许您在NStack网络控制台中定义和更新JSON文件,并使用NStack SDK或使用常规GET请求检索它们。
NStack.sharedInstance.getContentResponse(id) { (data, error) in
guard error == nil else {
print("Error fetching response with id: \(id)")
return
}
// Use data
}
集合
集合是响应的更结构化版本,可以用作简单读取API的替代方案。有关更详细的解释,请参阅功能概述。
let completion: (NStack.Result<Product>) -> Void = { result in
switch result {
case .success(let data):
print("Fetching collection successful")
print(data)
case .failure(let error):
print("Error fetching collection: \(error)")
}
}
NStack.sharedInstance.fetchCollectionResponse(for: id, completion: completion)
文件
使用文件,您可以使用常规GET请求检索NStack网络控制台上定义的文件。文件功能尚未在SDK中实现。
if let url = URL(string: url) {
URLSession.shared.downloadTask(with: url) { (localURL, urlResponse, error) in
guard error == nil else {
print("Error fetching file with url: \(url)")
print(error)
return
}
if let localURL = localURL {
print("Local URL: \(localURL)")
// Use the localURL to modify, use your newly downloaded file
}
}.resume()
}
版本控制
版本控制会在有新版本可用和可用的更改时通知用户。您无需做任何事情即可使用版本控制功能,只需要将NStack SDK包含到您的项目中。有关如何设置版本控制的详细信息,请参阅功能概述。
注意:此功能目前不支持macOS和watchOS。
消息
消息功能会在应用启动时向用户提供自定义消息,例如警告服务器故障。您无需采取任何行动即可使用消息功能,只需在项目中包含 NStack sdk 即可。要显示消息,请在 NStack 网页控制台中创建一条消息。查看 功能概览 了解如何设置消息。
注意:此功能目前不支持macOS和watchOS。
评分提醒
评分提醒功能会在用户启动应用一定次数后显示苹果内置的评分提醒。您无需执行任何操作即可使用评分提醒功能,只需在项目中包含 NStack sdk 即可。要启用评分提醒,请在其 NStack 网页控制台中进行配置。查看 功能概览 了解如何设置评分提醒。
注意:此功能目前不支持macOS和watchOS。
地理位置
NStack 支持一系列地理位置功能。您可以获取和存储世界各国的国家、大洲、语言和时区列表,根据 (lat, lng) 坐标获取时区以及根据请求者的 IP 地址获取地理位置信息。例如:
NStack.sharedInstance.timezone(lat: 12.0, lng: 55.0) { (timezone, error) in
if let timezone = timezone {
print("(12.0,55.0) is in timezone \(timezone.name)")
}
}
验证
NStack 可以验证电子邮件的语法和域名,只需使用
NStack.sharedInstance.validateEmail("[email protected]") { (valid, error) in
if valid {
//Email syntax and domain is valid
}
}
👥 致谢
由
📄 许可证
NStackSDK 可在 MIT 许可证下获得。有关更多信息,请参阅 LICENSE 文件。