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 时不调用的主要内容,如果未能解决你的问题,请参考以下文章