需要在Airbridge Dashboard
> Tracking Link
> Deep Link
中设置以下两种信息。
iOS URI Scheme
iOS App ID
请在iOS URL Scheme
输入框中输入包含://
的URL Scheme,如下所示。
例如) example://
Attention
Airbridge的URI Scheme仅支持英文小写字母、数字以及部分特殊字符 (
-
,+
,.
)。
请访问 https://developer.apple.com/account/resources 并转到 Identifiers
。
点击要跟踪的应用的 Identifier
。
将该 Identifier
的 App ID Prefix
+.
+ Bundle ID
输入到 Airbridge Dashboard iOS App ID
输入框中。
例如) 9JA89QQLNQ.com.apple.wwdc
请转到 Xcode
> Project 文件
> Info
> URL Types
。
请在 URL Schemes
中输入在 Airbridge Dashboard中输入过的 iOS URI Scheme
。
Attention
请删除
:/
/ 后输入。
请转到 Xcode
> Project 文件
> Signing & Capabilities
。
点击 + Capability
,并添加 Associated Domains
。
在 Associated Domains
中添加 applinks:YOUR_APP_NAME.airbridge.io
。
在 Associated Domains
中添加 applinks:YOUR_APP_NAME.deeplink.page
。
您可以在Dashboard的
Settings
>Tokens
>应用名称
中查看YOUR_APP_NAME
。
如果您使用 Autofill 功能,请参考 Troubleshooting > Webcredentials。
对于支持 iOS 12 及更早版本的应用,通常会在 AppDelegate 的 application(_:open:options:) 方法中传递事件。
1. 请打开 ios/[项目名称]/AppDelegate
文件。
2. 在下面函数的最顶部调用 handleURLSchemeDeeplink
函数,以便当 App 使用 Scheme 打开时,将 Deeplink 信息传递给 SDK。
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
options:(NSDictionary<UIApplicationOpenURLOptionsKey, id>*)options
{
[AirBridge.deeplink handleURLSchemeDeeplink:url];
return YES;
}
func application(_ app: UIApplication,
open url: URL,
options: [UIApplication.OpenURLOptionsKey : Any] = [:]) -> Bool
{
AirBridge.deeplink()?.handleURLSchemeDeeplink(url)
return true
}
3. 在下面函数的最顶部调用 handleUserActivity
函数,以便当 App 使用 Universal Link 打开时,将 Deeplink 信息传递给 SDK。
- (BOOL)application:(UIApplication*)application
continueUserActivity:(NSUserActivity*)userActivity
restorationHandler:(void (^)(NSArray* _Nullable))restorationHandler
{
[AirBridge.deeplink handleUserActivity:userActivity];
return YES;
}
func application(_ application: UIApplication,
continue userActivity: NSUserActivity,
restorationHandler: @escaping ([UIUserActivityRestoring]?) -> Void) -> Bool
{
AirBridge.deeplink()?.handle(userActivity)
return true
}
Attention
对于使用 SceneDelegate 的项目,URL 会传递给 SceneDelegate 而不是 AppDelegate。
关于用 SceneDelegate 接收 URL 的方法,请参考下一节: 使用 SceneDelegate时。
对于支持 iOS 13 及更高版本的应用,如果使用 SceneDelegate,DeepLink将通过以下方法传递。
应用处于 Not running 状态时加载的情况:
scene(_:willConnectTo:options:)
其他情况(例如,background):
Universal link: scene(_:continue:)
Scheme link: scene(_:openURLContexts:)
import UIKit
import AirBridge
@available(iOS 13, *)
class SceneDelegate: UIWindowSceneDelegate {
var window: UIWindow?
// Receive links after the app's killed
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
if let schemeLinkURL = connectionOptions.urlContexts.first?.url {
// Scheme
AirBridge.deeplink()?.handleURLSchemeDeeplink(schemeLinkURL)
} else if let userActivity = connectionOptions.userActivities.first {
// Universal
AirBridge.deeplink()?.handle(userActivity)
}
// ...
}
// Receive universal link
func scene(_ scene: UIScene, continue userActivity: NSUserActivity) {
AirBridge.deeplink().handle(userActivity)
// ...
}
// Receive scheme link
func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>) {
guard let schemeLinkURL = URLContexts.first?.url else {
return
}
AirBridge.deeplink().handleURLSchemeDeeplink(schemeLinkURL)
// ...
}
}
如果您使用 SwiftUI但并不使用 SceneDelegate
时,将通过 onOpenUrl
接收到DeepLink。与 SDK 初始化一样,需在具有 @main
的 App 类中添加相应方法。
import SwiftUI
import AirBridge
@main
@available(iOS 14, *)
struct OnlyUIApp: App {
...
var body: some Scene {
WindowGroup {
ContentView()
.onOpenURL { url in
if url.scheme != "http" && url.scheme != "https" {
// Scheme link
AirBridge.deeplink()?.handleURLSchemeDeeplink(url)
}
}
.onContinueUserActivity(NSUserActivityTypeBrowsingWeb) { userActivity in
AirBridge.deeplink()?.handle(userActivity)
}
}
}
}
Attention
对于使用 SwiftUI 并具有 SceneDelegate 的项目,您不能使用 onOpenUrl。在这种情况下,请参考上面的使用 SceneDelegate时。
请打开 ios/[项目名称]/AppDelegate
文件。
在 AppDelegate
的 application(_:didFinishLaunchingWithOptions:)
中使用 setDeeplinkCallback
函数设置当 App 使用DeepLink打开时调用的回调。
在 AppDelegate
的 application(_:didFinishLaunchingWithOptions:)
中使用 setDeeplinkCallback
函数设置当 App 使用DeepLink打开时调用的回调。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions {
[AirBridge getInstance:@"YOUR_APP_TOKEN" appName:@"YOUR_APP_NAME" withLaunchOptions:launchOptions];
[AirBridge.deeplink setDeeplinkCallback:^(NSString* deeplink) {
// Deeplink from airbridge = YOUR_SCHEME://...
NSLog(@"DeeplinkCallback : %@", deeplink);
}];
}
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey:
Any]?) -> Bool {
AirBridge.getInstance("YOUR_APP_TOKEN", appName: "YOUR_APP_NAME", withLaunchOptions: launchOptions)
AirBridge.deeplink()?.setDeeplinkCallback({ (deeplink) in
// Code to run when opening app with a deep link
// Airbridge Deeplink = YOUR_SCHEME://...
NSLog("DeeplinkCallback : %@", deeplink)
})
return true
}
与 SDK 初始化一样,需在具有 @main
的 App 类的构造函数中添加相应方法。
import SwiftUI
import AirBridge
@main
@available(iOS 14, *)
struct OnlyUIApp: App {
init() {
AirBridge.getInstance("YOUR_APP_TOKEN", appName: "YOUR_APP_NAME")
AirBridge.deeplink()?.setDeeplinkCallback { deeplink in
print(deeplink)
}
}
var body: some Scene {
WindowGroup {
ContentView()
}
}
}
使用 Airbridge iOS SDK 1.10.0 ~ 1.10.9
版本的情况下: Airbridge Deeplink
将以
https://YOUR_APP_NAME.airbridge.io/...
的形式传递。
使用 Airbridge iOS SDK ~ 1.9.10
版本的情况下: Airbridge Deeplink
将以
https://YOUR_APP_NAME.airbridge.io/...
或 YOUR_SCHEME://...
的形式传递。
如果在 Airbridge Tracking Link 中使用自定义域名,请将设置的自定义域名添加到 example.com
部分,并按照以下方式进行设置。
请转到 Xcode
> Project 文件
> Signing & Capabilities
> Associated Domains
。
点击 +
按钮,并添加 applinks:example.com
。
请打开 info.plist
。
请添加以下值。
当点击 Airbridge Dashboard的 iOS URI Scheme
中输入的 YOUR_SCHEME://...
形式的DeepLink时,请检查应用程序是否打开并发送 Deeplink 事件。
例如) example://
请点击DeepLink。
请在 Airbridge Dashboard
> Raw Data
> App Real-time Logs
中检查 Deeplink 事件是否存在。
Was this page helpful?