MongoDB Stitch iOS/Swift SDK
MongoDB 官方针对 iOS/Swift 的 Stitch SDK。
索引
文档
讨论
安装
CocoaPods
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令进行安装
$ gem install cocoapods
- 备注:为了构建 5.0+ 版本的 Stitch iOS SDK,需要使用 CocoaPods 1.6.0+。
要使用 CocoaPods 将 iOS SDK 集成到您的 Xcode 项目中,请在您的 Podfile
中指定它
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!
target '<Your Target Name>' do
# For core functionality and the Remote MongoDB Service
pod 'StitchSDK', '= 6.4.0'
# optional: for using the AWS service
pod 'StitchSDK/StitchAWSService', '= 6.4.0'
# optional: for using the Firebase Cloud Messaging service
pod 'StitchSDK/StitchFCMService', '= 6.4.0'
# optional: for using the HTTP service
pod 'StitchSDK/StitchHTTPService', '= 6.4.0'
# optional: for using the twilio service
pod 'StitchSDK/StitchTwilioService', '= 6.4.0'
end
然后,运行以下命令
$ pod install
打开 pod install
生成的不良 .xcworkspace
文件,以自动链接所有必要依赖项并访问项目。
示例用法
使用 SDK 创建新的应用程序(iOS)
在 Stitch 上设置应用程序
- 访问https://stitch.mongodb.com/ 并登录到 MongoDB Atlas。
- 使用所需的名称在项目中创建一个新应用程序。
- 通过点击左侧面板的 'Stitch' 并点击您的应用程序,在 Stitch 中访问您的应用程序。
- 从左侧面板顶部复制您的 Stitch 应用程序 ID。
- 通过在左侧面板的用户页面中选中“提供者”选项卡并启用“允许用户匿名登录”选项来启用匿名身份验证。
使用Stitch在Xcode/CocoaPods中设置项目
-
下载并安装Xcode。
-
创建一个具有您期望名称的新应用程序项目。请确保选择Swift作为所选语言。
- 注意:iOS 11.0是最低iOS部署目标。
- 使用命令行导航到项目目录,然后运行
pod init
。
- 在生成的
Podfile
中,在您的应用程序目标依赖项下添加以下行
pod 'StitchSDK', '= 6.4.0'
请参阅上述可选Stitch服务pods列表,您可以将它们添加到Podfile中。
- 运行
pod install
。
- 打开生成的
.xcworkspace
文件。您的应用程序项目将配置所有必要的依赖项,以便与MongoDB Stitch通信。
- 要使用基本Stitch功能,在源文件中导入
import StitchCore
。
- 要创建BSON文档和类似ObjectId的BSON值,在源文件中导入
import MongoSwift
。
- 要通过Stitch访问远程MongoDB实例,在源文件中导入
import StitchRemoteMongoDBService
。
使用SDK
初始化SDK
- 当您的应用程序初始化时,运行以下代码来初始化Stitch SDK。您的
AppDelegate.swift
中的application(_:didFinishLaunchWithOptions)
方法可以是一个初始化步骤的适当位置。一定要导入import StitchCore
。
// at the top of the file
import StitchCore
// ...
// in `application(_:didFinishLaunchWithOptions)`
do {
_ = try Stitch.initializeDefaultAppClient(
withClientAppID: "your-client-app-id"
)
print("Successfully initialized default Stitch app client!");
} catch {
// note: This initialization will only fail if an incomplete configuration is
// passed to a client initialization method, or if a client for a particular
// app ID is initialized multiple times. See the documentation of the "Stitch"
// class for more details.
print("Failed to initialize MongoDB Stitch iOS SDK: \(error)")
}
- 要获取用于登录和与Stitch通信的客户端,请使用
Stitch.defaultAppClient
。
// in a view controller's properties, for example
private lazy var stitchClient = Stitch.defaultAppClient!
登录
- 我们启用了匿名登录,所以让我们用这个登录!在您的代码中的任何位置添加以下内容
let client = Stitch.defaultAppClient!
print("logging in anonymously")
client.auth.login(withCredential: AnonymousCredential()) { result in
switch result {
case .success(let user):
print("logged in anonymous as user \(user.id)")
DispatchQueue.main.async {
// update UI accordingly
}
case .failure(let error):
print("Failed to log in: \(error)")
}
}
- 现在通过在Xcode中转到Product,Run(或按⌘R)来运行您的应用程序。
- 当应用程序运行时,通过转到View,Debug Area,Show Debug Area打开调试区域。
- 您应该看到以下类似日志消息
logging in anonymously
logged in anonymously as user 58c5d6ebb9ede022a3d75050
执行函数
- 登录后,您可以使用StitchClient的
callFunction()
方法执行一个Stitch函数
client.callFunction(
withName: "echoArg", withArgs: ["Hello world!"], withRequestTimeout: 5.0
) { (result: StitchResult<String>) in
switch result {
case .success(let stringResult):
print("String result: \(stringResult)")
case .failure(let error):
print("Error retrieving String: \(String(describing: error))")
}
}
- 如果您已经配置了Stitch应用程序具有一个名为"echoArg"的函数,该函数返回其参数,即
// Stitch Function called 'echoArg'
exports = function(arg) {
return arg;
};
您应该在Xcode调试区域看到一条消息
String result: Hello world!
获取不带Stitch.defaultAppClient的StitchAppClient
如果您不希望只有一个默认初始化的StitchAppClient,可以使用以下方法来初始化多个app ID的客户
do {
let client1 = try Stitch.initializeAppClient(withClientAppID: "your-first-client-app-id")
let client2 = try Stitch.initializeAppClient(withClientAppID: "your-second-client-app-id")
} catch {
print("Failed to initialize MongoDB Stitch iOS SDK: \(error.localizedDescription)")
}
您可以使用那里返回的客户或您应用程序中的任何其他地方使用的以下内容
let client1 = try! Stitch.appClient(forAppID: "your-first-client-app-id")
let client2 = try! Stitch.appClient(forAppID: "your-second-client-app-id")
$ gem install cocoapods
Podfile
中指定它source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!
target '<Your Target Name>' do
# For core functionality and the Remote MongoDB Service
pod 'StitchSDK', '= 6.4.0'
# optional: for using the AWS service
pod 'StitchSDK/StitchAWSService', '= 6.4.0'
# optional: for using the Firebase Cloud Messaging service
pod 'StitchSDK/StitchFCMService', '= 6.4.0'
# optional: for using the HTTP service
pod 'StitchSDK/StitchHTTPService', '= 6.4.0'
# optional: for using the twilio service
pod 'StitchSDK/StitchTwilioService', '= 6.4.0'
end
$ pod install
pod install
生成的不良 .xcworkspace
文件,以自动链接所有必要依赖项并访问项目。下载并安装Xcode。
创建一个具有您期望名称的新应用程序项目。请确保选择Swift作为所选语言。
pod init
。Podfile
中,在您的应用程序目标依赖项下添加以下行 pod 'StitchSDK', '= 6.4.0'
pod install
。.xcworkspace
文件。您的应用程序项目将配置所有必要的依赖项,以便与MongoDB Stitch通信。import StitchCore
。import MongoSwift
。import StitchRemoteMongoDBService
。AppDelegate.swift
中的application(_:didFinishLaunchWithOptions)
方法可以是一个初始化步骤的适当位置。一定要导入import StitchCore
。 // at the top of the file
import StitchCore
// ...
// in `application(_:didFinishLaunchWithOptions)`
do {
_ = try Stitch.initializeDefaultAppClient(
withClientAppID: "your-client-app-id"
)
print("Successfully initialized default Stitch app client!");
} catch {
// note: This initialization will only fail if an incomplete configuration is
// passed to a client initialization method, or if a client for a particular
// app ID is initialized multiple times. See the documentation of the "Stitch"
// class for more details.
print("Failed to initialize MongoDB Stitch iOS SDK: \(error)")
}
Stitch.defaultAppClient
。 // in a view controller's properties, for example
private lazy var stitchClient = Stitch.defaultAppClient!
let client = Stitch.defaultAppClient!
print("logging in anonymously")
client.auth.login(withCredential: AnonymousCredential()) { result in
switch result {
case .success(let user):
print("logged in anonymous as user \(user.id)")
DispatchQueue.main.async {
// update UI accordingly
}
case .failure(let error):
print("Failed to log in: \(error)")
}
}
logging in anonymously
logged in anonymously as user 58c5d6ebb9ede022a3d75050
callFunction()
方法执行一个Stitch函数 client.callFunction(
withName: "echoArg", withArgs: ["Hello world!"], withRequestTimeout: 5.0
) { (result: StitchResult<String>) in
switch result {
case .success(let stringResult):
print("String result: \(stringResult)")
case .failure(let error):
print("Error retrieving String: \(String(describing: error))")
}
}
// Stitch Function called 'echoArg'
exports = function(arg) {
return arg;
};
String result: Hello world!
do {
let client1 = try Stitch.initializeAppClient(withClientAppID: "your-first-client-app-id")
let client2 = try Stitch.initializeAppClient(withClientAppID: "your-second-client-app-id")
} catch {
print("Failed to initialize MongoDB Stitch iOS SDK: \(error.localizedDescription)")
}
let client1 = try! Stitch.appClient(forAppID: "your-first-client-app-id")
let client2 = try! Stitch.appClient(forAppID: "your-second-client-app-id")