带有社交元数据的 Firebase 动态链接未在 iMessage 上显示图像(iOS 消息)

Posted

技术标签:

【中文标题】带有社交元数据的 Firebase 动态链接未在 iMessage 上显示图像(iOS 消息)【英文标题】:Firebase Dynamic Links with Social Metadata not showing image on iMessage (iOS Messages) 【发布时间】:2020-04-26 19:37:07 【问题描述】:

我遇到了动态链接和社交元数据问题。在 Facebook 上共享时似乎可以正常工作...图像已正确附加。但是当我在 ios 上使用 Messages 共享时……没有图像出现。只是 Firebase 文件夹徽标。

【问题讨论】:

【参考方案1】:

我遇到了完全相同的问题,我找到了一种在 iMessage 中显示预览图像的方法,方法是创建 LPLinkMetadata 或 LinkPresentation。即使它没有解决核心问题,它似乎也能正常工作。

基本上,我首先下载了要在预览中显示的图像,然后基于该图像创建 LPLinkMetadata。

let image = UIImage(data: data)! //Image to show in preview
let metadata = LPLinkMetadata()
metadata.imageProvider = NSItemProvider(object: image)
metadata.originalURL = url //dynamic links
metadata.title = "Holland Bloorview Kids Rehabilitation Hospital on Flixxaid"

let metadataItemSource = LinkPresentationItemSource(metaData: metadata)
let activity = UIActivityViewController(activityItems: [metadataItemSource], applicationActivities: [])
self.present(activity, animated: true)

LinkPresentaionItemSource 来自this blog。

class LinkPresentationItemSource: NSObject, UIActivityItemSource 
    var linkMetaData = LPLinkMetadata()

    //Prepare data to share
     func activityViewControllerLinkMetadata(_ activityViewController: UIActivityViewController) -> LPLinkMetadata? 
        return linkMetaData
    

    //Placeholder for real data, we don't care in this example so just return a simple string
    func activityViewControllerPlaceholderItem(_ activityViewController: UIActivityViewController) -> Any 
        return "Placeholder"
    

    /// Return the data will be shared
    /// - Parameters:
    ///   - activityType: Ex: mail, message, airdrop, etc..
    func activityViewController(_ activityViewController: UIActivityViewController, itemForActivityType activityType: UIActivity.ActivityType?) -> Any? 
        return linkMetaData.originalURL
    
    
    init(metaData: LPLinkMetadata) 
        self.linkMetaData = metaData
    

【讨论】:

谢谢!在此期间,这是一个很好的解决方法。我注意到的几件事:Facebook 的预览有时不会加载图像,但那是次要的。此外,当我发布到 Facebook 或其他平台时,链接会弹出 preview.link 页面,而不是直接打开应用程序。有没有办法避免这种情况? 我注意到当我从 activityViewController 编辑 Facebook 帖子时,图像没有显示。但是,该图像似乎在 Facebook Feed 中的实际帖子中显示得很好。如果动态链接设置正确,它应该显示警报视图控制器说“离开 Facebook?”和“此网页正在尝试打开 Facebook 以外的应用程序。您确定要打开它吗?”。如果没有出现,那么我想你应该回去看看动态链接本身是否正常工作。

以上是关于带有社交元数据的 Firebase 动态链接未在 iMessage 上显示图像(iOS 消息)的主要内容,如果未能解决你的问题,请参考以下文章

Android - Google + 上的 Firebase 动态社交元标记链接

Flutter firebase动态链接社交标签信息根本不显示

测试未发布应用的 Firebase 动态链接

带有颤动的 Firebase 动态链接:深层链接 URL 未打开应用程序

IOS10 Firebase 动态链接显示带有打开按钮的空白页面。但为啥?

使用 React Native 在 Firebase 中使用动态链接设置带有查询参数的动态深层链接