Ios 应用程序未运行时的通用链接

Ios 应用程序未运行时的通用链接,ios,objective-c,ios9,ios-universal-links,Ios,Objective C,Ios9,Ios Universal Links,我正在我的应用程序中实现通用链接。除了应用程序不在后台运行外,其他一切都对我有用。在这种情况下,我如何在我的应用程序中打开特定页面?iOS启动了我的应用程序,但我没有收到任何回拨 -(BOOL)应用程序:(UIApplication*)应用程序连续性:(nsseractivity*)用户活动恢复处理程序:(void(^)(NSArray*)恢复处理程序 在这个函数中,我都不会用这一行获取任何url NSURL*launchURL=[launchOptions值forkey:uiapplicati

我正在我的应用程序中实现通用链接。除了应用程序不在后台运行外,其他一切都对我有用。在这种情况下,我如何在我的应用程序中打开特定页面?iOS启动了我的应用程序,但我没有收到任何回拨

-(BOOL)应用程序:(UIApplication*)应用程序连续性:(nsseractivity*)用户活动恢复处理程序:(void(^)(NSArray*)恢复处理程序

在这个函数中,我都不会用这一行获取任何url

NSURL*launchURL=[launchOptions值forkey:uiapplicationaunchoptionsurlkey]
里面

-(BOOL)应用程序:(UIApplication*)应用程序使用选项完成启动:(NSDictionary*)启动选项
此函数

有人知道我如何获得启动我的应用程序的url吗


当您打开应用程序的通用链接时,谢谢

 - (BOOL)application:(UIApplication *)app
        openURL:(NSURL *)url
        options:(NSDictionary<NSString *,
                         id> *)options
-(BOOL)应用程序:(UIApplication*)应用程序
openURL:(NSURL*)url
选项:(NSDictionary*)选项
使用通用链接作为参数和选项(如果是)调用。查看详细信息。

您需要实施

- (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,如果可以管理,则返回YES

例如

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) { }

当你的应用程序不在后台运行,用户点击一个通用链接时。

你能解释一下每件事对我都有效吗?什么对你不起作用?当你的应用在后台时,不会调用didFinishLaunching。您应该研究openURL方法。