EightBase iOS SDK
用 Swift 编写的 EightBase iOS SDK
安装
CocoaPods 上可用
EightBase 通过 CocoaPods 提供。要安装,请简单地添加以下行到您的 Podfile
pod 'EightBase'
然后,从命令行,cd
到您的项目目录,并执行以下操作
pod install
pod update
来安装 EightBase pod 并将其更新到 SDK 的最新版本。
请确保执行 pod update
。否则,CocoaPods 可能不会使用 SDK 的最新版本!
添加 Auth0 凭据
在您的应用程序 bundle 中添加一个名为 Auth0.plist
的 plist
文件,并包含以下信息。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>ClientId</key>
<string>{YOUR_CLIENT_ID}</string>
<key>Domain</key>
<string>{YOUR_DOMAIN}</string>
</dict>
</plist>
在您的应用程序的 Info.plist
文件中,将您的 iOS Bundle Identifier 注册为自定义 scheme,如下所示
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleTypeRole</key>
<string>None</string>
<key>CFBundleURLName</key>
<string>auth0</string>
<key>CFBundleURLSchemes</key>
<array>
<string>{YOUR_BUNDLE_IDENTIFIER}</string>
</array>
</dict>
</array>
使用方法
初始化
您应使用apiToken进行认证
EightBase.auth(with: __YOUR_8BASE_ENDPOINT__, apiToken: __YOUR_API_TOKEN__) { result in
switch(result) {
case .success():
print("Successfully authentificated")
break
case .failure(let error):
print("Failed with \(error)")
break
}
}
或通过传递nil
给apiToken
使用idToken
EightBase.auth(with: __YOUR_8BASE_ENDPOINT__, apiToken: nil) { result in
switch(result) {
case .success():
print("Successfully authentificated")
break
case .failure(let error):
print("Failed with \(error)")
break
}
}
允许EightBase处理认证回调。在您的AppDelegate.swift中添加以下内容
func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any]) -> Bool {
return EightBase.resumeAuth(url, options: options)
}
要启用面部ID或触控ID,请使用以下代码
EightBase.enableBiometrics(withTitle: "Touch ID / Face ID Login")
通过调用logout
清除所有凭据
EightBase.logout()
Apollo配置详情
下载模式
apollo schema:download --endpoint=___YOUR_ENDPOINT___/graphql schema.json
添加代码生成构建步骤
要在Xcode构建过程中调用apollo,创建一个在“编译源代码”之前的构建步骤。
在您的应用程序目标“构建阶段”设置标签页上,点击“+”图标并选择“新运行脚本阶段”。创建一个运行脚本,将其名称更改为“生成Apollo GraphQL API”,并将其拖到“编译源代码”之上。然后在下面的shell脚本区域中添加以下内容
APOLLO_FRAMEWORK_PATH="$(eval find $FRAMEWORK_SEARCH_PATHS -name "Apollo.framework" -maxdepth 1)"
if [ -z "$APOLLO_FRAMEWORK_PATH" ]; then
echo "error: Couldn't find Apollo.framework in FRAMEWORK_SEARCH_PATHS; make sure to add the framework to your project."
exit 1
fi
cd "${SRCROOT}/${TARGET_NAME}"
$APOLLO_FRAMEWORK_PATH/check-and-run-apollo-cli.sh codegen:generate --queries="$(find . -name '*.graphql')" --schema=schema.json API.swift
上面的脚本将通过包含在Apollo.framework包中的check-and-run-apollo-cli.sh包装脚本调用apollo。这样做的主要原因是为了检查您系统上安装的apollo版本是否与项目中安装的框架版本兼容,如果不兼容则警告您。如果没有这个检查,您可能最终会生成与框架中包含的运行时代码不兼容的代码。
将生成的API文件添加到您的目标
将生成的API.swift文件拖到您的目标上。
完整Apollo文档
请访问apollographql.com/docs/ios/查看完整文档
如何从Apollo迁移
只需使用EightBase的Apollo变量
您应该只使用EightBase.Apollo
EightBase.Apollo?.watch(query: AllCustomersQuery()) { (result, error) in
if let error = error {
NSLog("Error while fetching query: \(error.localizedDescription)")
return
}
...
}