簡體   English   中英

如何將應用程序與 iOS 通訊錄應用程序集成?

[英]How to integrate app with iOS Contacts app?

我正在嘗試將消息應用程序與 iOS 通訊錄應用程序集成,以便用戶可以通過該應用程序直接從聯系人發送消息。 這在WWDC 2016 session 240 中有介紹,但顯然省略了一些細節。

按照 WWDC 示例,我有:

  • 將活動類型添加到應用程序的Info.plist

     <key>NSUserActivityTypes</key> <array> <string>INSendMessageIntent</string> </array>
  • 在我的應用程序委托中實現了application(_:continue:restorationHandler:)

  • 創建並捐贈了一個互動

    let activity = NSUserActivity(activityType: "com.example.message") activity.title = "Send CB Test Message" activity.expirationDate = Date.distantFuture let recipient = INPerson( /* recipient with an email address in my Contacts database */ ) let sender = INPerson( /* me */ ) let intent = INSendMessageIntent(recipients: [recipient], content: nil, groupName: nil, serviceName: "CB Test Chat", sender: sender) let response = INSendMessageIntentResponse(code: .success, userActivity: activity) let interaction = INInteraction(intent: intent, response: response) interaction.direction = .outgoing interaction.donate { (error) in print("Donated") if let error = error { print("Donate error: \\(error)") } }

這樣作品。 該應用程序在通訊錄中的一個收件人卡片上顯示為一個選項。 在聯系人中點擊它會使用NSUserActivity啟動我的應用程序。 這很好,但這還不夠。

WWDC 會議以 WhatsApp 為例。 WhatsApp 顯示為我所有聯系人的選項,即使是那些沒有 WhatsApp 帳戶的聯系人。 我想也許 WhatsApp 已經為每個人創建並捐贈了互動。 但是,如果我在 WhatsApp 未運行時創建了一個新聯系人,它會立即成為該聯系人的一個選項。 我做了一些實驗,將接收者參數設置為 nil 或一個空數組,但這沒有任何效果。

那么我在這里錯過了什么? 我很接近,也許? 但似乎捐贈互動可能並不是我真正需要的。

更新,回應@Mark:澄清了activity的使用。 我已經嘗試過使用response (它使用activity )並使用 nil 值作為response但都沒有奏效。

只需使用 UIActivityViewController。 您可以使用文本或任何對象對其進行實例化。 如果這就是您想要的,您還可以排除除消息之外的所有類型。

let objectsToShare = [textToShare, otherObject] as [Any]
let activityVC = UIActivityViewController(activityItems: objectsToShare, applicationActivities: nil)
        
//New Excluded Activities Code
activityVC.excludedActivityTypes = [UIActivityType.addToReadingList]
activityVC.popoverPresentationController?.sourceView = sender as? UIView
present(activityVC, animated: true, completion: nil)

我在 WWDC 2019 上問過這個問題,並被告知這種大規模捐贈僅適用於 VOIP 應用程序,不適用於消息傳遞應用程序。 這個問題中的代碼理論上適用於 VOIP——可能或可能不完全如所呈現的那樣。 我沒有嘗試過,因為我沒有在正確的應用程序上工作。

暫無
暫無

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

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