测试已测试 | ✓ |
语言语言 | SwiftSwift |
许可证 | Apache 2 |
发布最后发布 | 2017年11月 |
SwiftSwift 版本 | 4.0 |
SPM支持 SPM | ✗ |
由 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 子模块
$ git submodule add https://github.com/10gen/stitch-ios-sdk.git
打开新的 stitch-ios-sdk
文件夹,并将 StitchCore.xcodeproj
拖放到您的应用程序 Xcode 项目的项目导航器中。
它应该嵌套在您的应用程序的蓝色项目图标之下。它是在所有其他 Xcode 组之上还是之下并不重要。
在项目导航器中选择 StitchCore.xcodeproj
并验证部署目标与您的应用程序目标相匹配。
接下来,选择您的应用程序项目(蓝色项目图标)以导航到目标配置窗口,并在侧边栏中选择“目标”下的应用程序目标。
在窗口顶部的标签栏中打开“通用”面板。
点击“嵌入二进制文件”部分下的 +
按钮。
您将看到两个不同的 StitchCore.xcodeproj
文件夹,其中有两个不同版本的 StitchCore.framework
嵌套在“Products”文件夹中。
您可以选择哪一个“Products”文件夹并不重要,但您必须选择顶部的
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.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方法来运行管道。
为了避免进一步嵌套任务,在登录后,我们应该调用一些使用客户端的初始化方法。我们还将客户端作为 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)
}