【问题标题】:How can I open my app directly from the iOS Share Sheet?如何直接从 iOS 共享表打开我的应用程序?嘿
【发布时间】:2021-03-24 16:35:55
【问题描述】:

更新:还没有时间测试提供的答案,但会在我尝试不同的事情时更新这个答案。

在 iOS 14 模拟器中,当我打开共享表并单击他们的 Share Target 时,Apple News 应用程序会立即启动,他们会检查共享 URL 是否已添加到他们的索引中。

我的问题是他们如何在没有任何用户交互的情况下立即启动他们的应用程序?

一个 gif 大约值 100,000 个字:https://giphy.com/gifs/HPzTNyWGDDMVwASQ9z

我想这可能是注册 Universal Link 然后从共享扩展视图控制器以编程方式触发它的某种组合,但我想知道是否有人有更好的想法。


我问过的其他几个地方:

Swift Subreddit

iOS Programming Subreddit

【问题讨论】:

    标签: ios swift deep-linking ios-universal-links ios-sharesheet


    【解决方案1】:

    这只是对新闻应用的开放 URL 调用。在 iOS 14 之前,它被命名为copy to app name。 为此,您需要在 plist 中使用键 CFBundleDocumentTypes 为您的应用程序指定支持的文档类型。 有关更多信息,请参阅苹果文档: https://help.apple.com/xcode/mac/current/#/devddd273fdd

    股票期权列表有所变化。

    案例 1: 当您的应用程序不支持任何类型的扩展时。并支持将文档添加到 plist。您的申请将出现在支持文件的共享表中。点击时,您的应用程序会收到一个 OpenURL 调用,其中包含共享文档的 URL。

    案例 2:您的应用程序支持分享扩展或操作扩展,那么您的应用程序的打开 URL 调用选项将不会出现在分享表中。如果不满足共享扩展和操作扩展激活谓词并且您的应用程序支持共享的文档,则该选项将显示与案例 1 相同。(总结:如果共享表中列出了共享扩展或操作扩展,则打开 URL 选项将未列出。)

    注意:openURL 调用的限制是,它只支持单个 URL。例如,您正在共享多个文件,您的应用程序 OpenURL 选项将出现。但在点击时,您的应用程序只会收到一个 URL。

    如果您的要求是仅共享一个 URL,并且您的应用程序没有共享扩展和操作扩展。那么密钥CFBundleDocumentTypes就是你的朋友。

    【讨论】:

    • 非常感谢您的回答。我目前正在后端工作,但是一旦完成并返回前端工作,我将尝试一下。肯定会提供支持并检查这是否有效。不过有一个问题:我需要选择什么文档类型才能接受 ALL URLS
    • LSItemContentTypes 的值是接受字符串数组(文档的 UTI)的数组类型。要支持所有 URL,您可以使用 public.url
    • 干杯@manish punia。我仍在处理我的后端,但一旦我到达下一个触发器点,我会尝试你的解决方案。非常感谢!
    • @lustig 有效吗?我已经尝试过这个解决方案,但没有任何改变。
    • @picode 由于我仍在后端工作,因此无法尝试此操作。检查问题中链接的 subreddits。他们发布了更多选项。你到底尝试了什么?
    猜你喜欢
    • 1970-01-01
    • 2014-10-08
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-21
    • 2015-08-16
    相关资源
    最近更新 更多