Muy bien, no estoy familiarizado con las estructuras o la prueba con la que estoy lidiando en Swift, pero lo que tengo que hacer es crear un iMessage en la extensión de mi aplicación iMessage con una etiqueta, lo que significa que la parte de la imagen del iMessage está configurada en el pegatina.
He estudiado detenidamente los documentos de Apple y https://www.captechconsulting.com/blogs/ios-10-imessages-sdk-creating-an-imessages-extension pero no entiendo cómo hacer esto o realmente cómo funcionan las estructuras. Leí sobre estructuras pero eso no me ha ayudado a lograr lo que hace Apple en su código de muestra (descargable en Apple)
Lo que hace Apple es que primero redactan un mensaje, lo que entendí, tomando su estructura como una propiedad, pero yo tomo una pegatina en su lugar.
guard let conversation = activeConversation else { fatalError("Expected a conversation") }
//Create a new message with the same session as any currently selected message.
let message = composeMessage(with: MSSticker, caption: "sup", session: conversation.selectedMessage?.session)
// Add the message to the conversation.
conversation.insert(message) { error in
if let error = error {
print(error)
}
}
Luego hacen esto (esto es directamente del código de muestra) para redactar el mensaje:
fileprivate func composeMessage(with iceCream: IceCream, caption: String, session: MSSession? = nil) -> MSMessage {
var components = URLComponents()
components.queryItems = iceCream.queryItems
let layout = MSMessageTemplateLayout()
layout.image = iceCream.renderSticker(opaque: true)
layout.caption = caption
let message = MSMessage(session: session ?? MSSession())
message.url = components.url!
message.layout = layout
return message
}
}
Básicamente, esta línea es con lo que estoy teniendo el problema, ya que necesito configurar mi etiqueta como la imagen:
layout.image = iceCream.renderSticker(opaque: true)
Apple hace una función completamente complicada que no entiendo renderSticker
para sacar la parte de la imagen de sus pegatinas, y lo he intentado, pero creo que esto es mejor:
let img = UIImage(contentsOfURL: square.imageFileURL)
layout.image = ing
layout.image necesita un UIImage, y puedo obtener el imageFileURL de la pegatina, simplemente no puedo poner esto en un UIImage. Recibo un error que no coincide con las sobrecargas disponibles.
¿Qué puedo hacer aquí? ¿Cómo puedo insertar la imagen de mi pegatina en un mensaje? ¿Cómo puedo obtener una imagen de su imageFileURL?
No hay init(contentsOfURL:)
inicializador para UIImage
. El más cercano es init(contentsOfFile:)
.
Para usar ese con la URL de su archivo, puede hacer lo siguiente:
let img = UIImage(contentsOfFile: square.imageFileURL.path)
Este artículo se recopila de Internet, indique la fuente cuando se vuelva a imprimir.
En caso de infracción, por favor [email protected] Eliminar
Déjame decir algunas palabras