Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
iOS:我如何显示一个;以“打开”;应用程序切换器(操作系统选择器表)。没有文件,只是一个链接。_Ios_Swift_Deep Linking - Fatal编程技术网

iOS:我如何显示一个;以“打开”;应用程序切换器(操作系统选择器表)。没有文件,只是一个链接。

iOS:我如何显示一个;以“打开”;应用程序切换器(操作系统选择器表)。没有文件,只是一个链接。,ios,swift,deep-linking,Ios,Swift,Deep Linking,在iOS中,您可以修改plist以将文件类型与应用程序关联,因此如果用户选择该文件,将弹出“打开方式…”菜单。 (通过使用CbundleDocumentTypes) 但是,对于不表示任何文件的深层链接,我如何才能做到这一点?换句话说,我只想通过电子邮件发送一个深度链接,在应用程序切换器中解析,让用户在3个不同的应用程序之间进行选择 我没有托管或发送任何文件。我只需要传递数据参数,就像普通深度链接一样,但它可以在3个不同的应用程序中打开,而不仅仅是1个 如果它是已知的文件类型(即,不是您编写的文件

在iOS中,您可以修改plist以将文件类型与应用程序关联,因此如果用户选择该文件,将弹出“打开方式…”菜单。 (通过使用CbundleDocumentTypes)

但是,对于不表示任何文件的深层链接,我如何才能做到这一点?换句话说,我只想通过电子邮件发送一个深度链接,在应用程序切换器中解析,让用户在3个不同的应用程序之间进行选择

我没有托管或发送任何文件。我只需要传递数据参数,就像普通深度链接一样,但它可以在3个不同的应用程序中打开,而不仅仅是1个

如果它是已知的文件类型(即,不是您编写的文件类型/扩展名),则可以将添加到Info.plist中。以下是步骤:

1) 单击XCode中的项目并选择“信息”选项卡

2) 在底部,您应该看到“文档类型”;您需要添加您的文档类型。至于名字,你可以写任何东西。有关类型,请参阅:

3) 最后一步是展开“附加文档类型属性”并添加键值对。键应该是字符串类型的“LSHandlerRank”。该值应为“Alternate”

如果您有自定义类型,则将执行相同的步骤,但有一些例外:

1) 添加具有所需名称的文档类型

2) 添加符合您的项目的类型;例如,如果您在一家文件类型为abc的示例公司工作,我会在这些文件类型中添加“com.example.abc”

3) 接下来,您需要向“导入的UTI”区域添加一个值。对于描述,请使用您想要的任何内容

4) 对于标识符,使用在步骤2中输入的相同值(即“com.example.abc”)

5) 关于“符合”,请参考苹果公司的文档:

6) 在“附加UTI属性”下,您将添加一个标记为“UTTypeTagSpecification”的字典

7) 在字典下,添加一个标记为“public.filename extension”的数组

8) 在数组下,添加两项。第一个应该是扩展名(“ABC”)的大写版本,第二个应该是扩展名(“ABC”)的小写版本

这将允许应用程序在iOS显示的“打开方式”菜单中弹出。为了处理填充,您需要将以下函数添加到AppDelegate:

func application(_ app: UIApplication, open url: URL, options: [UIApplicationOpenURLOptionsKey : Any] = [:]) -> Bool

那就够了

我将很快尝试这些步骤。您认为以下URL格式是否可行:?所以只要我注册。myCustomExtension。或者(.mce等),如上所述,那么HTTP URL将在我的应用程序中解析?我想知道Safari会优先考虑HTTP方案,还是我的自定义文件扩展名会优先考虑?它基本上不是一个深层链接,因为这个方案可以是少数几个应用程序中的一个,所以我想使用HTTP作为一个方案(因为我事先不知道会安装哪些应用程序)。我还假设appHook.myCustomExtension(文件)实际上不必存在。这只是一个展示应用程序切换程序的技巧,并将参数传递给众多应用程序中的一个。(模仿“一对多”深度链接)。我上面描述的内容将允许您打开扩展名为.mycustom的文件。您在评论中描述的内容看起来像一个网址。那个网址会产生什么?如果它是另一个网页,则不会使用上述步骤打开。如果它生成一个.myCustomExtension类型的文件,那么它应该可以工作。关于Safari,如果它能够处理扩展,那么我认为它将以本机方式显示它。也就是说,应该会显示一个“OpenWith”选项,它仍然允许你做你想做的事情。我的主要挑战是我不知道URL方案会提前做什么。所以我不能去:MyApp://路线。因为我不知道什么是“我的应用”会提前。(我们的平台必须适用于任何处理深度链接的应用程序)。所以它基本上是一个动态的深度链接。我希望使用文件扩展名作为调用“open with”工作表的一种方式,但是没有任何实际的文件,并且仍然允许根据需要传递参数,就像深度链接一样。@FranticRock,URL本身应该不重要。当您导航到有问题的URL(或任何可能的URL)时,浏览器中会显示什么?如果可以选择下载带有相关文件扩展名的文件,则无论URL方案如何,都应该可以使用。