StitchLogger 2.0.0

StitchLogger 2.0.0

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

Jason FlaxEric 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. 通过在侧边栏的“平台”下的“客户端”中找到应用程序的 client App ID 来注意该应用程序
  4. 通过在侧边栏的“控制”下的“身份验证”中启用“允许用户匿名登录”来设置一个基于 Stitch 的 XCode 中的项目

设置一个基于 Stitch 的项目

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 子模块

    $ 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。

  • 对于添加其他模块,如 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.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. 为了避免进一步嵌套任务,在登录后,我们应该调用一些使用客户端的初始化方法。我们还将客户端作为 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. 转到云消息并记下您的旧版服务器密钥和发送者ID
  7. 在Stitch中转到通知部分,并输入您的API密钥(旧版服务器密钥)和发送者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)
}