获取我的应用通过 openURL 打开的文件的 URL:
Posted
技术标签:
【中文标题】获取我的应用通过 openURL 打开的文件的 URL:【英文标题】:Getting the URL of a file my app is opening via openURL: 【发布时间】:2014-05-31 12:45:34 【问题描述】:我使用自定义文件类型配置了我的应用程序。我在 Info.plist 文件中添加了所需的信息(文档类型和导出的 UTI)。现在 ios 可以识别我的文件类型并将其与应用程序相关联。因此,例如,当我打开 Mail 时,我看到我的文件作为附件,我可以单击它并选择使用我的应用程序打开。
如何从我的应用中获取文件的 URL?我尝试在UIApplication
上使用OpenUrl
,但它不起作用。
有人知道怎么做吗?
【问题讨论】:
感谢您分享解决方案,但请将其放在下面的答案中,而不是放在您的问题正文中。 It's perfectly acceptable to answer your own question. 【参考方案1】:找到解决方案
我声明我需要 Xamarin/C# 的解决方案,但我要求提供标准的 Objective-c 代码,以便稍后翻译成 C#,因为我找不到任何相关信息。
最后,这是对我有用的解决方案:
在 AppDelegate.cs 文件中我添加了这个方法:
public override bool OpenUrl (UIApplication application, NSUrl url, string sourceApplication, NSObject annotation)
NSNotificationCenter.DefaultCenter.PostNotification (NSNotification.FromName ("OpenMyFile", url));
return true;
然后在我的主控制器中,我在“ViewDidLoad”方法中添加这个:
NSNotificationCenter.DefaultCenter.AddObserver ("OpenMyFile", openFileVoid);
在同一个类中我添加了一个新方法:
public async void openFileVoid (NSNotification notification)
NSUrl _filePath = (NSUrl)notification.Object;
// Do what you need with this file path
我希望对某人有用! :)
【讨论】:
【参考方案2】:我认为这与-[UIApplication openURL:]
无关。
正如Apple Doc 中所述:
您会收到有关文件的信息 在
application:willFinishLaunchingWithOptions:
或application:didFinishLaunchingWithOptions:
应用程序的方法 代表。如果您的应用程序处理自定义文件类型,您必须 实现这个委托方法(而不是applicationDidFinishLaunching:
方法)并用它来初始化你的 应用。传递给
application:willFinishLaunchingWithOptions:
或application:didFinishLaunchingWithOptions:
方法包含信息 关于要打开的文件。
您可以在文档中了解更多信息。
【讨论】:
以上是关于获取我的应用通过 openURL 打开的文件的 URL:的主要内容,如果未能解决你的问题,请参考以下文章
处理应用程序:openURL:sourceApplication: 在 iOS 应用程序中打开文件
通过调用 openURL 方法强制 safari 在同一选项卡中打开 url
NSWorkspace openURL 未使用文件类型的默认应用程序打开存储在 iCloud Drive 中的文件
如何在苹果地图中的两个位置之间绘制路线。通过 openURL