簡體   English   中英

Swift 如何使用 MFMessageComposeViewController 在文本消息中發送 Url

[英]Swift How to Send Url in Text Message with MFMessageComposeViewController

如何通過 MFMessageComposeViewController 發送 url?

當您從 Safari 共享 url 時,它會顯示豐富的鏈接預覽。 但是,我只能將 url 作為純文本傳遞。

這就是我想要實現的目標: 在此處輸入圖像描述

這是我的代碼,僅將鏈接顯示為純文本:

import MessageUI
class testVC: UIViewController, MFMessageComposeViewControllerDelegate {
    
    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(animated)
        sendText(toPhoneNumber: "1001001000", url: URL(string: "https://stackoverflow.com/questions/ask")!)
    }
    
    func sendText(toPhoneNumber: String?, url: URL) {
        if MFMessageComposeViewController.canSendText() {
            let messageVC = MFMessageComposeViewController()
            messageVC.body = "\(url)"
            if let number = toPhoneNumber {
                messageVC.recipients = [number]
            }
            messageVC.messageComposeDelegate = self
            self.present(messageVC, animated: true, completion: nil)
        } else {print("Cannot send message. Error.")}
    }
    
    func messageComposeViewController(_ controller: MFMessageComposeViewController, didFinishWith result: MessageComposeResult) {
        controller.dismiss(animated: true, completion: nil)
    }
}

如何通過文本發送 url?

它是自動的,取決於相關 url 網頁上的元數據。

iOS 和 macOS 中的消息將自動為人們發送的鏈接生成內聯預覽。 默認情況下,這些呈現為灰色氣泡,顯示頁面標題、域和小圖標。 通過在您的網站頁面上添加少量 Open Graph 元數據,您可以通過顯示圖像和有意義的標題使這些 iMessage 鏈接預覽看起來很棒。

https://developer.apple.com/library/archive/technotes/tn2444/_index.html

例如,在您的代碼中嘗試以下 URL 用於測試目的:

http://www.apple.com/iphone

你應該得到這樣的預覽:

http://www.apple.com/iphone 的鏈接預覽包括圖像和標題的元數據

網頁本身包括圖像和標題的元數據。

<meta property="og:title" content="iPhone" />
<meta property="og:image" content="https://www.apple.com/v/iphone/home/t/images/home/og.png?201610171354" />

上面的元數據在預覽中添加了標題和圖像。 沒有它,您將無法獲得預覽。

您可以通過更新要為其生成預覽的頁面的元數據來測試這一點。

如果您正在為其生成預覽的網頁不受您的控制,您的替代方法是:

  1. 請求網頁管理員添加元數據
  2. 鏈接到您可以控制的中間網頁,您可以在其中添加元數據,然后重定向到結束頁面。

總而言之:您的 iOS 代碼不負責生成預覽 - 它是實際 URL 網頁上的元數據。

如果此答案解決了您的問題,請將其標記為正確。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM