应用程序不是 运行 时的通用链接
Universal Links while app is not running
我正在我的应用程序中实现通用链接。一切都对我有用,除非应用程序不在后台 运行。在那种情况下,我如何在我的应用程序中打开特定页面? iOS 启动了我的应用程序,但我在
中没有收到任何回调
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
在这个函数中,我没有得到任何 url 这条线
NSURL *launchURL = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
里面
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
这个函数。
有没有人知道我如何获得启动我的应用程序的 url。
谢谢
当您使用您的应用打开通用 Link 时
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<NSString *,
id> *)options
以通用 Link 作为参数和选项调用(如果是这种情况)。检查 apple docs 了解详情。
你需要实施
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation{
url= yourappurl://with some app link data
sourceApplication= //who called your application
}
例如,如果您的应用程序是从 facebook messenger 调用的,那么您将得到
sourceApplication=@"com.facebook.messenger"
您可以通过这种方式访问您的 url ...
NSDictionary *aux = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey];
if (aux) {
NSUserActivity *activity = [aux objectForKey:@"UIApplicationLaunchOptionsUserActivityKey"];
NSString *urlString = activity.webpageURL.absoluteString;
}
但为了更好地使用,您必须验证此 URL 和 return 如果您可以管理它,是的
例如...
if([urlString hasPrefix:@"https://myUrl.com"]) {
return YES;
}
..在此之后的方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
会叫
在 Swift 5 中,对于 SceneDelegate
文件,它将调用:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { }
当您的应用不在后台 运行 并且用户点击通用 link。
我正在我的应用程序中实现通用链接。一切都对我有用,除非应用程序不在后台 运行。在那种情况下,我如何在我的应用程序中打开特定页面? iOS 启动了我的应用程序,但我在
中没有收到任何回调- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
在这个函数中,我没有得到任何 url 这条线
NSURL *launchURL = [launchOptions valueForKey:UIApplicationLaunchOptionsURLKey];
里面
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
这个函数。
有没有人知道我如何获得启动我的应用程序的 url。
谢谢
当您使用您的应用打开通用 Link 时
- (BOOL)application:(UIApplication *)app
openURL:(NSURL *)url
options:(NSDictionary<NSString *,
id> *)options
以通用 Link 作为参数和选项调用(如果是这种情况)。检查 apple docs 了解详情。
你需要实施
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation{
url= yourappurl://with some app link data
sourceApplication= //who called your application
}
例如,如果您的应用程序是从 facebook messenger 调用的,那么您将得到
sourceApplication=@"com.facebook.messenger"
您可以通过这种方式访问您的 url ...
NSDictionary *aux = [launchOptions objectForKey:UIApplicationLaunchOptionsUserActivityDictionaryKey];
if (aux) {
NSUserActivity *activity = [aux objectForKey:@"UIApplicationLaunchOptionsUserActivityKey"];
NSString *urlString = activity.webpageURL.absoluteString;
}
但为了更好地使用,您必须验证此 URL 和 return 如果您可以管理它,是的
例如...
if([urlString hasPrefix:@"https://myUrl.com"]) {
return YES;
}
..在此之后的方法
- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray *))restorationHandler
会叫
在 Swift 5 中,对于 SceneDelegate
文件,它将调用:
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { }
当您的应用不在后台 运行 并且用户点击通用 link。