【问题标题】:application:openURL:sourceApplication:annotation: not called when there is a MainWindow.xibapplication:openURL:sourceApplication:annotation: 有 MainWindow.xib 时不调用
【发布时间】:2015-11-19 13:11:07
【问题描述】:

我已经筛选了有关未调用 openURL 的各种其他帖子,但没有一个适用于我的情况,所以这是另一个。

我正在尝试实现深度链接。我可以从链接打开应用程序,所以我的 url 方案有效。但是,openURL 方法永远不会被调用。

我使用的是 iOS 8。

如果我删除 MainWindow.xib,我会得到一个黑屏(还没有整理出编程的细节),但是 openURL 方法在它应该被调用的时候被调用了。

我的公司并不完全是该项目的所有者,因此理想情况下,有一种方法可以使 openURL 与 MainWindow.xib 一起使用,或者显示一些说明不支持此功能的文档。

代码: 在我的 applicationdelegate.m 中:

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
{
    NSLog(@"open %@",url);
    return YES;
}

在 info.plist 中:

<key>CFBundleURLTypes</key>
<array>
<dict>
    <key>CFBundleURLName</key>
    <string>com.something.appish</string>
    <key>CFBundleURLSchemes</key>
    <array>
        <string>schemename</string>
    </array>
    <key>CFBundleURLTypes</key>
    <string>Viewer</string>
</dict>
</array>

我使用的链接是 schemename://anything 和 com.something.appish://anything

这些会打开我的应用程序或将其置于最前面,但不会导致 openURL 调用。

以前有关该主题的帖子包括:

  1. openURL 应在应用程序委托中定义,而不是在视图控制器中。
  2. 尝试使用 handleOpenURL(适用于早期 iOS 版本)。
  3. url 方案未正确定义。
  4. 未安装应用程序的情况。
  5. 试图打开特定文件。

【问题讨论】:

  • 嗨。欢迎来到 SO。您提供了一个问题,并且描述得很好。现在所缺少的只是您实现的处理这些操作的代码。 stackoverflow.com/help/how-to-ask
  • 谢谢。我已将代码添加到帖子中。
  • 嗯,是的,您的代码和设置似乎一切正常。你在真机上测试过吗?尝试使用schemename://anything 打开它,然后登录NSLog(@"%@", [url host]
  • 是的,这是在真机上。
  • 好吧,如果你还没有尝试过清理,那我就没主意了

标签: ios hyperlink deep-linking openurl


【解决方案1】:

事实证明,一个静态库(我可以访问它的源代码)调动了 openURL。

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 2015-04-05
    • 2011-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多