获取我的应用通过 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

我可以在 ios 中通过 Application::openURL 方法使用 Safari 打开本地文件 url 吗?

iOS --- 通过openURL实现APP之间跳转并传递数据