iOS升级指南

升级你的 iOS 应用

本文档将指导你将现有的 iOS 应用的 iOS SDK 升级为新的 iOS-SDK_2.0 版本。

完成升级分为三个步骤:

1.安装新的 Wilddog SDK。

2.更新 Wilddog Sync 部分代码。

3.更新 Wilddog Auth 部分代码。

你可以随时升级你的项目。你的应用和现有 SDK 仍可继续工作。当你准备在自己的应用中使用某些新 Wilddog 功能时,你就可以更新自己的代码。

以下为将 Wilddog iOS 应用代码迁移至新 API 的步骤。

您不必立即更新应用代码。现有数据库和身份验证代码仍然适用于您迁移的项目。

但是,当您准备开始在应用中使用某些新 Wilddog 功能时,则可以安装新 Wilddog SDK。

安装新的 Wilddog SDK

在安装之前请删除老版本 SDK,安装新的 SDK 有两种方式,你可以选择其中一种:

1. 更新 CocoaPods

引入下面 pod 到 Podfile 文件中

pod 'Wilddog'

添加完成后在命令行执行 pod update

2. 手动安装新版 SDK

1.下载 Sync SDK 下载地址
2.下载 Auth SDK 下载地址
3.下载 Core SDK 下载地址
4.把 WilddogSync.framework 、WilddogAuth.framework 和 WilddogCore.framework 拖到工程目录中。
5.选中 Copy items if needed 、Create Groups,点击 Finish。 点击工程文件 -> TARGETS -> General,在 Linked Frameworks and Libraries 选项中点击 ‘+’,将 JavaScriptCore.framework、 libsqlite3 加入列表中。

更新 Sync 部分代码

原来的 Database 更新为 Sync,新版 Sync 的类名和部分函数调用会有所变化。

导入头文件

导入头文件在更新前后没有变化

Objective-C

#import <Wilddog/Wilddog.h>

Swift

import Wilddog

初始化

更新之前

Objective-C

Wilddog *rootRef = [[Wilddog alloc] initWithUrl:@"https://<YOUR-WILDDOG-APP>.wilddogio.com"];

Swift

var rootRef = Wilddog(url:"https://<YOUR-WILDDOG-APP>.wilddogio.com")

更新之后

Objective-C

//初始化 WDGApp
WDGOptions *option = [[WDGOptions alloc] initWithSyncURL:@"https://<YOUR-WILDDOG-APP>.wilddogio.com"];
[WDGApp configureWithOptions:option];

Swift

//初始化 WDGApp
let options = WDGOptions.init(syncURL: "https://<YOUR-WILDDOG-APP>.wilddogio.com")
WDGApp.configureWithOptions(options)

写数据

更新之前

Objective-C

[rootRef setValue:@"Hello Wilddog!"];

Swift

rootRef.setValue("Hello Wilddog!")

更新之后

Objective-C

//获取 WDGSyncReference 实例
WDGSyncReference *rootRef= [[WDGSync sync] reference];
[rootRef setValue:@"Hello Wilddog!"];

Swift

//获取 WDGSyncReference 实例
let rootRef = WDGSync.sync().reference()
rootRef.setValue("Hello Wilddog!")

启用磁盘持久化

如果你的应用使用磁盘持久化,现在就能通过 WDGSync 对象将其启用:

更新之前

Objective-C

[Wilddog defaultConfig].persistenceEnabled = YES;

Swift

Wilddog.defaultConfig().persistenceEnabled = true

更新之后

Objective-C

[WDGSync sync].persistenceEnabled = YES;

Swift

WDGSync.sync().persistenceEnabled = true

更新 Auth 部分代码

Wilddog 身份验证功能现在以独立出来,所以现在身份验证操作是在 WDGAuth 实例完成,而不是通过 Wilddog 引用完成的。

登录一个用户

身份验证方法的工作方式与以前类似,但现在作为方法以新名称存在于 WDGAuth 对象上,WAuthData 现在替换为 WDGUser。例如:

更新之前

Objective-C

[ref authAnonymouslyWithCompletionBlock:^(NSError *error, WAuthData *authData) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", authData.uid);
    }
}];

Swift

ref.authAnonymouslyWithCompletionBlock { error, authData in
    if error != nil{
        print("Sign in failed: \(error!.localizedDescription)")
    }else{
        print("Signed in with uid: \(authData!.uid)")
    }
}

更新之后

Objective-C

[[WDGAuth auth] signInAnonymouslyWithCompletion:^(WDGUser *_Nullable user,
                                                  NSError *_Nullable error) {
    if (error) {
        NSLog(@"Sign in failed: %@", error.localizedDescription);
    } else {
        NSLog(@"Signed in with uid: %@", user.uid);
    }
}];

Swift

WDGAuth.auth()?.signInAnonymouslyWithCompletion({ user, error in
    if error != nil{
        print("Sign in failed: \(error!.localizedDescription)")
    }else{
        print("Signed in with uid: \(user!.uid)")
    }
})

注销一个用户

更新之前

Objective-C

[ref unauth];

Swift

ref.unauth()

更新之后

Objective-C

[[WDGAuth auth] signOut:nil];

Swift

try! WDGAuth.auth()!.signOut()

监控身份验证状态

更新之前

Objective-C

[ref observeAuthEventWithBlock:^(WAuthData *authData) {
    if (authData) {
        NSLog(@"User is signed in with uid: %@", authData.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
}];

Swift

ref.observeAuthEventWithBlock { authData in
    if authData != nil {
        print("User is signed in with uid: \(authData!.uid)");
    } else {
        print("No user is signed in.");
    }
}

更新之后

Objective-C

[[WDGAuth auth] addAuthStateDidChangeListener:^(WDGAuth * _Nonnull auth, WDGUser * _Nullable user) {
    if (user) {
        NSLog(@"User is signed in with uid: %@", user.uid);
    } else {
        NSLog(@"No user is signed in.");
    }
  }];

Swift

WDGAuth.auth()?.addAuthStateDidChangeListener({ auth, user in
    if user != nil {
        print("User is signed in with uid: \(user!.uid)")
    } else {
        print("No user is signed in.")
    }
})

更多关于新版 Auth API,请参考 使用指南

R