测试已测试 | ✓ |
Lang语言 | SwiftSwift |
许可证 | Apache 2 |
发布最后发布 | 2017年12月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
Maintained by Jason Flax, Eric Daniels.
CocoaPods 是 Cocoa 项目的依赖管理器。您可以使用以下命令安装它
$ gem install cocoapods
要构建 Stitch iOS 0.2.0+,需要 CocoaPods 1.1.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 仓库。
$ git init
通过运行以下命令将 iOS SDK 添加为 git submodule
$ git submodule add https://github.com/10gen/stitch-ios-sdk.git
打开新 stitch-ios-sdk
文件夹,并将其 StitchCore.xcodeproj
拖到您应用程序的 Xcode 项目导航器中。
它应该嵌套在您应用程序蓝色项目图标下面。它是否在所有其他 Xcode 组之上或之下无关紧要。
选择项目导航器中的 StitchCore.xcodeproj
并验证部署目标是否与您的应用程序目标匹配。
接下来,在项目导航器中选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口,并选择侧边栏中的“目标”标题下的应用程序目标。
在该窗口的选项卡栏中,打开“通用”面板。
在“嵌入式二进制文件”部分下单击 +
按钮。
您将看到两个不同的 StitchCore.xcodeproj
文件夹,每个文件夹中都有两个不同的 StitchCore.framework
版本,它们嵌套在“产品”文件夹中。
您可以选择哪个“产品”文件夹不重要,但您选择的是顶部的
StitchCore.framework
还是底部的StitchCore.framework
是很重要的。
选择顶部的 StitchCore.framework
用于 iOS,底部的用于 OS X。
要添加其他模块,如 MongoDBService
、ExtendedJson
或 StitchGCM
,请按照以上相同流程操作,但使用相应的 .xcodeproj
文件。
这就完成了!
StitchCore.framework
将自动添加为目标依赖项,链接框架和嵌入框架的文件构建阶段,这是在模拟器和设备上构建所需的所有内容。
要初始化我们与 Stitch 的连接,请访问您的 AppDelegate
,并在 application:didFinishLoadingWithOptions
方法中添加以下行,并将 your-app-id
替换为您在 Stitch 中设置应用时记下的应用 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)来在 XCode 中运行您的应用。
一旦应用开始运行,请通过转到视图,调试窗口,显示调试窗口来打开调试区域。
您应该会看到类似以下的消息
logging in anonymously
logged in anonymously as user 58c5d6ebb9ede022a3d75050
登录后,运行管道通过客户端的 executePipeline
方法执行
为了避免进一步嵌套我们的任务,登录后我们应该调用一些使用客户端的初始化方法。我们还将客户端作为 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) }
}
}
})
}
在登录后调用 initializeClient()
并运行您的应用。您应该看到类似以下的消息
number of results: 1
Hello world!
目前,StitchGCM 需要作为子模块添加。
要使用 getPushProviders 方法通过 Stitch 创建 GCM 推送提供者,并确保存在 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)?
}
}
func didReceiveToken(registrationToken: String) {
gcmClient.registerToken(token: registrationToken)
}