SDK集成
最后更新:2024/01/30
注意
通过SDK集成的方式可以快速接入Turbolink iOS SDK的功能, 如果你想要更手动的方式接入,可以选择API的接入方式。
SDK最小支持版本:iOS 12+
项目配置
为了顺利使用SDK,你需要在你的App项目中进行下述配置:
1.获取应用配置
2.添加info.plist配置
注:如果不想使用info.plist配置,可以直接在后面的步骤中使用代码配置
info.plist
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>Turbolink Key</key>
<dict>
<key>App Key</key>
<string>你的项目AppKey</string>
<key>App Secret</key>
<string>你的项目AppSecret</string>
<key>Project</key>
<string>你的项目ProjectId</string>
</dict>
</dict>
</plist>
SDK安装
可以从以下的方式中选择一种合适的方式来安装SDK到你的APP。
Swift Package Manager
- 在APP项目中的
Package Dependencies
中点击"+"添加Swift Package。 - 输入以下的Package URL,点击添加。
https://github.com/Branchcn/TurboLinkFramework
CocoaPods
- 在APP项目中的打开
podfile
,如果还没有,请使用pod init
创建。 - 在
podfile
文件中TurboLinkSDK依赖。
target 'APP_NAME' do
use_frameworks!
pod 'TurboLinkSDK', '~>1.0'
end
- 执行命令
pod install && pod update
完成依赖加载。
使用流程图
以AppDelegate为例,使用流程如下:
快速使用
请根据你的项目使用的UI场景选择对应的使用方式,按照以下方式接入SDK后,默认将会在App使用的时候自动上报安装和打开事件。(如果你希望app启动后到首页再进行初始化及上报操作,你可以使用延迟初始化的方式)
若使用Objective-C,请使用桥接模式。
注:请在网络授权之后初始化TurboLink,否则有可能因为没有网络授权而埋点上报失败
- UIKit Scenes
- AppDelegate
- Objective-C
- Swift
SceneDelegate.m
#import "SceneDelegate.h"
#import "TurboLinkSDK/TurboLinkSDK-Swift.h"
@interface SceneDelegate ()
@end
@implementation SceneDelegate
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
// 如果用户已登录,开启应用时设置当前登录用户id
[User setIdentityWithUserId:@""];
[[TurboLink initSessionWithOptions:connectionOptions] start];
}
- (void)scene:(UIScene *)scene continueUserActivity:(NSUserActivity *)userActivity {
// 如果用户已登录,开启应用时设置当前登录用户id
[User setIdentityWithUserId:@""];
[TurboLink sceneWithContinue:userActivity];
}
- (void)scene:(UIScene *)scene openURLContexts:(NSSet<UIOpenURLContext *> *)URLContexts{
// 如果用户已登录,开启应用时设置当前登录用户id
[User setIdentityWithUserId:@""];
[TurboLink sceneWithOpenURLContexts:URLContexts];
}
@end
SceneDelegate.swift
import UIKit
import TurboLinkSDK
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let _ = (scene as? UIWindowScene) else { return }
// 如果用户已登录,开启应用时设置当前登录用户id
TurboLink.User.setIdentity(userId: "")
// TurboLink 初始化
TurboLink.initSession(options: connectionOptions).start()
}
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
// 如果用户已登录,开启应用时设置当前登录用户id
TurboLink.User.setIdentity(userId: "")
// 事件埋点
TurboLink.scene(continue: userActivity)
}
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
// 如果用户已登录,开启应用时设置当前登录用户id
TurboLink.User.setIdentity(userId: "")
// 事件埋点
TurboLink.scene(openURLContexts: URLContexts)
}
}
- Objective-C
- Swift
SceneDelegate.m
#import "AppDelegate.h"
#import "TurboLinkSDK/TurboLinkSDK-Swift.h"
@interface AppDelegate ()
@end
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// 如果用户已登录,开启应用时设置当前登录用户id
[User setIdentityWithUserId:@""];
[[TurboLink initSessionWithLaunchOptions:launchOptions] start];
return YES;
}
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
[TurboLink applicationWithOpen:url];
return YES;
}
-(BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
[TurboLink applicationWithContinue:userActivity];
return YES;
}
@end
AppDelegate.swift
import UIKit
import TurboLinkSDK
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// 如果用户已登录,开启应用时设置当前登录用户id
TurboLink.User.setIdentity(userId: "")
TurboLink.initSession(launchOptions: launchOptions).start()
return true
}
func application(_ app: UIApplication, open url: URL, options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool {
TurboLink.application(open: url)
return true
}
func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool {
// Handler for Universal Links
TurboLink.application(continue: userActivity)
return true
}
}
使用代码配置项目参数
除了使用Info.plist配置项目参数外,你也可以使用代码进行配置。注:如果两者皆配置了参数,代码优先级更高
- Objective-C
- Swift
[Project setConfigWithProjectId:@"" appKey:@"" appSecret:@""];
TurboLink.Project.setConfig(projectId: "", appKey: "", appSecret: "")
延迟初始化的方式
如果你担心初始化放在application中会造成性能影响,可以使用延迟初始化的方式,把真正的初始化放到进入app之后(如进入首页)。
注:如果进入app有启动页/广告页,亦可以使用该方法规避活动页覆盖广告页显示问题。
- UIKit Scenes
- AppDelegate
- Objective-C
- Swift
#import "SceneDelegate.h"
#import "TurboLinkSDK/TurboLinkSDK-Swift.h"
//SceneDelegate.m
@implementation SceneDelegate
- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
[[TurboLink initSessionWithOptions:connectionOptions] delay];
}
//Home.m
- (void)viewDidLoad {
[super viewDidLoad];
//配置Turbolink相关数据...
[TurboLink delayStart];
}
import UIKit
import TurboLinkSDK
//SceneDelegate.swift
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
TurboLink.initSession(options: connectionOptions).delay()
}
}
//Home.wift
public override func viewDidLoad() {
super.viewDidLoad()
//配置Turbolink相关数据...
TurboLink.delayStart()
}
- Objective-C
- Swift
#import "AppDelegate.h"
#import "TurboLinkSDK/TurboLinkSDK-Swift.h"
//SceneDelegate.m
@implementation AppDelegate
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[[TurboLink initSessionWithLaunchOptions:launchOptions] delay];
return YES;
}
//Home.m
- (void)viewDidLoad {
[super viewDidLoad];
//配置Turbolink相关数据...
[TurboLink delayStart];
}
import UIKit
import TurboLinkSDK
//AppDelegate.swift
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
TurboLink.initSession(launchOptions: launchOptions).delay()
return true
}
}
//Home.swift
public override func viewDidLoad() {
super.viewDidLoad()
//配置Turbolink相关数据...
TurboLink.delayStart()
}
调试日志
使用方法
- Objective-C
- Swift
// 开启调试日志
[DebugOptions enableLog];
// 开启调试日志
TurboLink.Option.DebugOptions.enableLog()
粘贴板
使用方法
- Objective-C
- Swift
// 开启粘贴板配置
[PasteboardOptions enablePasteboard];
// 当检测到地址或者口令时获取弹窗授权 不设置时默认地址和口令都使用
[PasteboardOptions filterWithUri:YES code:YES];
// 设置需要弹窗授权的时机 install:安装完第一次打开时 open:每一次打开app时 redirect:通过链接跳转进入app时 reopen:切换app进入时 不设置时默认均不开启
[PasteboardOptions sceneWithInstall:YES open:YES redirect:YES reopen:YES];
TurboLink.Option.PasteboardOptions.enablePasteboard() // 开启粘贴板配置
.filter(uri: true, code: true) // 当检测到地址或者口令时获取弹窗授权 不设置时默认地址和口令都使用
.scene(install: true, open: true, redirect: true, reopen: true) // 设置需要弹窗授权的时机 install:安装完第一次打开时 open:每一次打开app时 redirect:通过链接跳转进入app时 reopen:切换app进入时 不设置时默认均不开启
用户管理
使用方法
- Objective-C
- Swift
// 设置当前登录用户id
[User setIdentityWithUserId:@""];
// 当用户存在等级体系时添加用户等级信息
[User setUserWithUserId:@"" nickName:@"" avatar:@"" inviteCode:@"" tags:@[]];
// 设置当前登录用户id
TurboLink.User.setIdentity(userId: "")
// 当用户存在等级体系时添加用户等级信息
TurboLink.User.setUser(userId: "",nickName: "", avatar: "", inviteCode: "", tags: [])
判断链接是否属于TurboLink
- Swift
- Objective-C
if TurboLink.isUrlBelongTurboLink(url: "https://xxx") {
}
if ([TurboLink isUrlBelongTurboLinkWithUrl:@"https://xxx"]) {
}