使用 UIActivityViewController 共享内容

Share content with UIActivityViewController

我的应用程序中存在用户生成的内容,例如房屋出租清单。我希望其他用户分享 post/listing 到 imessages。当收件人点击消息时,它可以在应用程序内打开完全相同的 post(如果该应用程序已下载或将其带到应用程序商店)。我以前见过这个功能,但我不确定该朝哪个方向前进。使用我当前的代码,我可以显示 activity 控制器并发送消息。 谁能指出我正确的方向?

  @objc func sharePost(){
        print("Share home")
        let items = ["Check out this house!"]
        let activityController = UIActivityViewController(activityItems: items, applicationActivities: nil)
        present(activityController, animated: true)
        
    }

您需要自定义 url 方案(即 myapp://contentID)或通用 link(即 https://myapp.com/contentID)。

自定义URL 方案

使用自定义 URL 方案(最接近您给出的示例),URL 告诉系统打开与该类型的 URL 关联的应用程序。您可以解析方案之后的部分(即我的示例中的 contentID)以查看向用户呈现的内容。请参阅 Apple 的文档:https://developer.apple.com/documentation/xcode/allowing_apps_and_websites_to_link_to_your_content/defining_a_custom_url_scheme_for_your_app

通用链接

使用通用链接,您可以为您的网站提供 link。如果用户下载了关联的应用程序,页面将在应用程序而不是网站中打开。这里的优势在于,即使用户没有应用程序,他们仍然可以看到内容。请参阅此处的文档:https://developer.apple.com/ios/universal-links/


无论哪种情况,您都会将 URL 传递给您的 UIActivityViewController。在通用 links 的情况下,如果您实现 OpenGraph 标签,您还将免费获得 links 旁边的那些漂亮的预览图像(例如在 iMessages 中)。

如何在您的应用程序中实现内容导航是一个架构决定,取决于您如何设置导航等许多因素