Расширение сообщений iOS, как напрямую переключать хост-приложение

У меня есть приложение, и я хочу добавить функцию расширения сообщений.

Я думал, что если пользователь выбирает сообщение, он переключает мое главное приложение, например, на карту Google.

Я сделал MSMessage и установил URL, и сообщение имеет макет шаблона, который имеет заголовок и субтитр.

let message = MSMessage()
message.url = "http://blahblah?customScheme=myHostAppLaunchScheme"
let template = MSMessageTemplateLayout()
template.image = sampleImage
template.caption = "this is a caption"
template.subCaption = "this is a sub caption"
message.layout = template

guard let conversation = activeConversation else {
      print("blahblah")
      return
}

conversation.insert(message) { (error) in
      print("finish. error = \(error == nil ? "nil"  : error!.localizedDescription)")
}

и я написал расширение кода Context.open (url, extensionHandler) в

willBecomeActive(with conversation: MSConversation)
didReceive(_ message: MSMessage, conversation: MSConversation)

конечно, я проанализировал URL выбранного сообщения.

но это не сработало, я ожидал.

переключатели расширения сообщений автоматически расширяют режим.

это работает, если я использовал

conversation.insertText("myHostAppLaunchScheme", nil)

но я не хочу, потому что он не может добавить шаблон:(

Есть ли идея, чтобы переключить iMessage на хост-приложение напрямую?

спасибо за любые идеи.

1 ответ

Решение

Я думаю, что нашел ответ.

нет никакого способа с использованием

conversation.insert(message, completionHandler)

я думаю, что Apple Music и Google Maps используют

conversation.insertText("some url", completionHandler)

потому что я скопировал URL после долгого нажатия на сообщение, которое разделяют Apple Music или Google Map

тогда я использую URL в моем коде

conversation.insertText("the URL", completionHandler)

это работает они сделали!!

Другие вопросы по тегам