测试测试 | ✓ |
语言语言 | SwiftSwift |
许可 | Apache 2 |
发布上次发布 | 2018年2月 |
SPM支持SPM | ✗ |
依赖 | |
PromiseKit/CorePromise | ~> 6.1.0 |
StitchLogger | ~> 2.0.0 |
ExtendedJson | ~> 2.0.2 |
StitchCore | ~> 3.0.2 |
CocoaPods是Cocoa项目的依赖管理器。您可以使用以下命令安装它:
$ gem install cocoapods
CocoaPods 1.1.0+是构建Stitch iOS 0.2.0+所必需的。
要使用CocoaPods将iOS SDK集成到Xcode项目中,请在您的Podfile中指定它:
source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '11.0'
use_frameworks!
target '<Your Target Name>' do
pod 'StitchCore', '~> 1.0.0'
# optional: for accessing a mongodb client
pod 'MongoDBService', '~> 1.0.0'
# optional: for using mongodb's ExtendedJson
pod 'ExtendedJson', '~> 1.0.0'
end
然后,运行以下命令:
$ pod install
如果您不想使用上述任何依赖管理器,您可以直接将iOS SDK集成到项目中。
打开终端,在顶级项目目录中运行cd
$ git init
通过运行以下命令将iOS SDK作为git子模块添加:
$ git submodule add https://github.com/10gen/stitch-ios-sdk.git
打开“stitch-ios-sdk”的新目录,并将“StitchCore.xcodeproj”拖拽到应用程序Xcode项目的项目导航器中。
它应该嵌套在应用程序蓝色项目图标下面。它是否在所有其他Xcode组上方或下方并不重要。
在项目导航器中选择“StitchCore.xcodeproj”,并确保部署目标与您的应用程序目标相匹配。
接下来,选择您的应用程序项目(蓝色项目图标)并在侧边栏的“Targets”标题下选择应用程序目标以导航到目标配置窗口。
在该窗口顶部的标签栏中,打开“General”面板。
在“Embedded Binaries”部分下点击“+”按钮。
您将看到两个不同的“StitchCore.xcodeproj”文件夹,每个文件夹中都有一个嵌套在“Products”文件夹中的不同版本的“StitchCore.framework”。
您可以选择哪个“Products”文件夹并不重要,但您选择的是顶部的还是底部的“StitchCore.framework”则很重要。
选择顶部的 StitchCore.framework
用于 iOS,底部的用于 OS X。
要添加其他模块,如 MongoDBService
、ExtendedJson
或 StitchGCM
,请按照上述相同过程进行,但使用相应的 .xcodeproj
文件。
这样就完成了!
StitchCore.framework
将自动被添加为目标依赖项,链接框架和嵌入框架在复制文件构建阶段,这是您在模拟器和设备上进行构建所需要的一切。
要初始化与 Stitch 的连接,请转到您的 AppDelegate
,并在您的 application:didFinishLoadingWithOptions
方法中添加以下行,并用您在 Stitch 中设置应用程序时记录的应用程序 ID 替换 your-app-id
let client = StitchClient(appId: "your-app-id")
这将仅实例化一个客户端,但不会与 Stitch 建立任何外出连接
由于我们启用了匿名登录,让我们使用它进行登录;在您的 client 后添加以下代码
client.fetchAuthProviders().then { (authProviderInfo: AuthProviderInfo) in
if (authProviderInfo.anonymousAuthProviderInfo != nil) {
return client.anonymousAuth()
} else {
print("no anonymous provider")
}
}.then { (userId: String) in
print("logged in anonymously as user \(userId)")
}.catch { error in
print("failed to log in anonymously: \(error)")
}
现在通过转到 XCode 的产品,运行(或者按 ⌘R)运行您的应用程序。
一旦应用程序正在运行,通过转到视图,调试区域,显示调试区域打开调试区域。
您应该会看到类似的消息
logging in anonymously
logged in anonymously as user 58c5d6ebb9ede022a3d75050
登录后,运行流水线是通过客户端的 executePipeline 方法完成的
为了避免进一步嵌套我们的任务,在登录后我们应该调用一些将使用客户端的 init 方法。我们还将客户端放置在 AppDelegate 的成员中
let client = StitchClient(appId: "your-app-id")
func initializeClient() {
var literalArgs: [String: ExtendedJsonRepresentable] = [:]
literalArgs["items"] = BsonArray(array: ["Hello"])
self.client.executePipeline(pipeline: Pipeline(action: "literal", args: literalArgs)).response(completionHandler: { (result) in
if let value = result.value {
if let strings = value as? BsonArray {
print("number of results: \(strings.count)")
strings.forEach { string in print(string) }
}
}
})
}
登录后调用 initalizeClient()
并运行您的应用程序。您应该会看到类似的消息
number of results: 1
Hello world!
目前,StitchGCM 需要作为子模块添加。
要通过询问 Stitch 创建 GCM 推送提供程序,您必须使用 getPushProviders 方法并确保存在 GCM 提供程序
self.stitchClient.getPushProviders().response { (result: StitchResult<AvailablePushProviders>) in
if let gcm = result.value?.gcm {
let listener = MyGCMListener(gcmClient: StitchGCMPushClient(stitchClient: self.stitchClient, info: gcm))
StitchGCMContext.sharedInstance().application(application,
didFinishLaunchingWithOptions: launchOptions,
gcmSenderID: "<YOUR-GCM-SENDER-ID>",
stitchGCMDelegate: listener)
}
}
StitchGCMDelegate
设置到 StitchGCMContext
class MyGCMDelegate: StitchGCMDelegate {
let gcmClient: StitchGCMPushClient
init(gcmClient: StitchGCMPushClient) {
self.gcmClient = gcmClient
}
func didFailToRegister(error: Error) {
}
func didReceiveToken(registrationToken: String) {
}
func didReceiveRemoteNotification(application: UIApplication,
pushMessage: PushMessage,
handler: ((UIBackgroundFetchResult) -> Void)?
}
}
StitchClient
上的 registerToken 方法func didReceiveToken(registrationToken: String) {
gcmClient.registerToken(token: registrationToken)
}