深度 link URI 如何在 iOS 上工作?
How does deep link URI works on iOS?
旅游品牌://hotel/123
这是一个深度 link URI 的例子;在哪里告诉我的应用 "hotel" 一词表示包含酒店的视图控制器?
当有人点击 link 并且 OS 将其路由到您的应用程序时,将调用 UIApplicationDelegate
中的两个方法之一。
- 如果应用程序已经是 运行,则方法将是
- application:openURL:sourceApplication:annotation:
其中 url
参数将是将用户带到那里的 NSURL
。
- 如果应用是冷启动的,则方法为
- application:didFinishLaunchingWithOptions:
和 launchOptions
参数将包含一个名为 UIApplicationLaunchOptionsURLKey
的键,其值将是用于启动应用程序的 NSURL
。
在任何一种情况下,您最终都会得到一个 NSURL
,您可以通过获取 absoluteString
并对其进行字符串操作来手动解析它,或者使用 NSURLComponents
之类的东西.
NSURLComponents
解决方案 URL 可能如下所示:
NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
NSString *scheme = components.scheme; // travelbrand
NSString *host = components.host; // hotel
NSString *path = components.path; // /123
旅游品牌://hotel/123
这是一个深度 link URI 的例子;在哪里告诉我的应用 "hotel" 一词表示包含酒店的视图控制器?
当有人点击 link 并且 OS 将其路由到您的应用程序时,将调用 UIApplicationDelegate
中的两个方法之一。
- 如果应用程序已经是 运行,则方法将是
- application:openURL:sourceApplication:annotation:
其中 url
参数将是将用户带到那里的 NSURL
。
- 如果应用是冷启动的,则方法为
- application:didFinishLaunchingWithOptions:
和 launchOptions
参数将包含一个名为 UIApplicationLaunchOptionsURLKey
的键,其值将是用于启动应用程序的 NSURL
。
在任何一种情况下,您最终都会得到一个 NSURL
,您可以通过获取 absoluteString
并对其进行字符串操作来手动解析它,或者使用 NSURLComponents
之类的东西.
NSURLComponents
解决方案 URL 可能如下所示:
NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
NSString *scheme = components.scheme; // travelbrand
NSString *host = components.host; // hotel
NSString *path = components.path; // /123