application:openUrl:在iOS9中被多次调用

时间:2017-03-01 04:19:18

标签: ios objective-c ios9 uiapplicationdelegate openurl

对于这个问题,我用一个视图创建了一个新项目。

我设置了一个网址方案并在视图中添加了一个标签。

代码在这里。

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    ViewController *vc = (ViewController *)self.window.rootViewController;
    vc.textLabel.text = [NSString stringWithFormat:@"%@\n%@",vc.textLabel.text,url.absoluteString];
    return YES;
}

工作正常。

但如果我在app初始化时添加一些耗时的操作, 像这样。

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // Override point for customization after application launch.
    [NSThread sleepForTimeInterval:1];
    return YES;
}

然后我通过这些步骤发现了这个问题:

  1. 使用safari通过输入网址方案启动应用
  2. 等待它跳转到应用程序,然后立即按下主页按钮
  3. 点按应用图标以继续
  4. 在标签
  5. 上获取两行网址

    UIApplication调用application:openUrl:多次。

    我尝试使用此委托,同样的问题。

    - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options
    

    您可以按主页按钮并多次点击应用程序图标,而openUrl将被多次调用,这取决于耗时操作的成本。

    我在iOS 9.3.3和iOS 9.3.1上测试过,遇到同样的问题。

    我试过iOS 8.1.2和iOS 10.2没有发现这个问题。

    任何想法/建议都非常有用&amp;非常感谢

0 个答案:

没有答案