MongoDBService 3.0.2

MongoDBService 3.0.2

测试测试
语言语言 SwiftSwift
许可 Apache 2
发布上次发布2018年2月
SPM支持SPM

Jason FlaxEric Daniels维护。



 
依赖
PromiseKit/CorePromise~> 6.1.0
StitchLogger~> 2.0.0
ExtendedJson~> 2.0.2
StitchCore~> 3.0.2
 

  • 作者:
  • MongoDB

Stitch

Join the chat at https://gitter.im/mongodb/stitch iOS Swift 4.0 Apache 2.0 License Cocoapods compatible

使用iOS SDK创建新应用

在Stitch上设置应用程序

  1. 访问https://stitch.mongodb.com/并登录
  2. 创建一个新的应用程序,并给应用程序起一个喜欢的名字
  3. 通过在侧面的“平台”下的“客户端”中找到应用程序的客户端App ID,并记录下来
  4. 在侧面的“控制”下转到身份验证,并启用“允许用户匿名登录”

使用Stitch在XCode中设置项目

CocoaPods

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。

  • 要添加其他模块,如 MongoDBServiceExtendedJsonStitchGCM,请按照上述相同过程进行,但使用相应的 .xcodeproj 文件。

  • 这样就完成了!

    StitchCore.framework 将自动被添加为目标依赖项,链接框架和嵌入框架在复制文件构建阶段,这是您在模拟器和设备上进行构建所需要的一切。


使用 SDK

登录

  1. 要初始化与 Stitch 的连接,请转到您的 AppDelegate,并在您的 application:didFinishLoadingWithOptions 方法中添加以下行,并用您在 Stitch 中设置应用程序时记录的应用程序 ID 替换 your-app-id

    let client = StitchClient(appId: "your-app-id")
  2. 这将仅实例化一个客户端,但不会与 Stitch 建立任何外出连接

  3. 由于我们启用了匿名登录,让我们使用它进行登录;在您的 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)")
        }
  4. 现在通过转到 XCode 的产品,运行(或者按 ⌘R)运行您的应用程序。

  5. 一旦应用程序正在运行,通过转到视图,调试区域,显示调试区域打开调试区域。

  6. 您应该会看到类似的消息

    logging in anonymously                                                    	
    logged in anonymously as user 58c5d6ebb9ede022a3d75050
    

运行流水线

  1. 登录后,运行流水线是通过客户端的 executePipeline 方法完成的

  2. 为了避免进一步嵌套我们的任务,在登录后我们应该调用一些将使用客户端的 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) }
    		}
    	    }
    	})
    }
  3. 登录后调用 initalizeClient() 并运行您的应用程序。您应该会看到类似的消息

    number of results: 1
    Hello world!
    

设置推送通知(GCM)

设置 GCM 提供程序
  1. 创建 Firebase 项目
  2. 点击将 Firebase 添加到您的 iOS 应用
  3. 跳过下载配置文件
  4. 跳过添加 Firebase SDK
  5. 点击 Firebase 项目中的概述旁边的齿轮,转到项目设置
  6. 转到云消息并记下您的 Legacy 服务器密钥和发送者 ID
  7. 在 Stitch 中转到通知部分,并输入您的 API 密钥(Legacy 服务器密钥)和发送者 ID
在 iOS 中接收推送通知
  1. 目前,StitchGCM 需要作为子模块添加。

  2. 要通过询问 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)
    }
}
  1. 要开始侦听通知,将您的 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)? 
									  
    }
}
  1. 要注册推送通知,请使用 StitchClient 上的 registerToken 方法
func didReceiveToken(registrationToken: String) {
    gcmClient.registerToken(token: registrationToken)
}