ExtendedJson 2.0.4

ExtendedJson 2.0.4

测试已测试
Lang语言 SwiftSwift
许可证 Apache 2
发布最后发布2017年12月
SwiftSwift 版本4.0
SPM支持 SPM

Maintained by Jason Flax, Eric Daniels.



  • 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. 注意在侧边栏下的“平台”中 Clients 下的应用程序客户端 App ID
  4. 转到侧边栏中的“控制”下的身份验证并启用“允许用户匿名登录”

使用 Stitch 在 XCode 中设置项目

CocoaPods

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。

  • 要添加其他模块,如 MongoDBServiceExtendedJsonStitchGCM,请按照以上相同流程操作,但使用相应的 .xcodeproj 文件。

  • 这就完成了!

    StitchCore.framework 将自动添加为目标依赖项,链接框架和嵌入框架的文件构建阶段,这是在模拟器和设备上构建所需的所有内容。


使用 SDK

登录

  1. 要初始化我们与 Stitch 的连接,请访问您的 AppDelegate,并在 application:didFinishLoadingWithOptions 方法中添加以下行,并将 your-app-id 替换为您在 Stitch 中设置应用时记下的应用 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)来在 XCode 中运行您的应用。

  5. 一旦应用开始运行,请通过转到视图,调试窗口,显示调试窗口来打开调试区域。

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

    logging in anonymously                                                    	
    logged in anonymously as user 58c5d6ebb9ede022a3d75050
    

运行管道

  1. 登录后,运行管道通过客户端的 executePipeline 方法执行

  2. 为了避免进一步嵌套我们的任务,登录后我们应该调用一些使用客户端的初始化方法。我们还将客户端作为 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. 在登录后调用 initializeClient() 并运行您的应用。您应该看到类似以下的消息

    number of results: 1
    Hello world!
    

设置推送通知(GCM)

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

  2. 要使用 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)
    }
}
  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)
}