application:openURL:sourceApplication:annotation: 有 MainWindow.xib 时不调用

Posted

技术标签:

【中文标题】application:openURL:sourceApplication:annotation: 有 MainWindow.xib 时不调用【英文标题】:application:openURL:sourceApplication:annotation: not called when there is a 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 调用。

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

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

【问题讨论】:

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

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

谢谢!

【讨论】:

以上是关于application:openURL:sourceApplication:annotation: 有 MainWindow.xib 时不调用的主要内容,如果未能解决你的问题,请参考以下文章