J'essaie d'intégrer une application de messagerie à l'application Contacts d'iOS, afin que les utilisateurs puissent envoyer des messages via l'application directement à partir de Contacts. Ce sujet a été traité dans Session 240 de la WWDC 2016 mais apparemment certains détails ont été omis.
En suivant l'exemple de la WWDC, je l'ai fait :
-
Ajout du type d'activité à l'interface de l'application
Info.plist
:<key>NSUserActivityTypes</key> <array> <string>INSendMessageIntent</string> </array>
-
Mis en œuvre
application(_:continue:restorationHandler:)
dans mon délégué d'application. -
Création et don d'une interaction
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)") } }
Este en quelque sorte travaux. L'application apparaît comme une option sur la carte d'un seul destinataire dans les contacts. Si vous tapez dessus dans les contacts, vous lancez mon application avec un message d'avertissement. NSUserActivity
. C'est bien, mais ce n'est pas suffisant.
La session WWDC a utilisé WhatsApp comme exemple. WhatsApp apparaît comme une option sur todo de mes contacts, même ceux qui n'ont pas de compte WhatsApp. Je pensais que WhatsApp avait peut-être créé et donné des interactions pour tout le monde. Mais si je crée un nouveau contact alors que WhatsApp n'est pas en cours d'exécution, c'est immédiatement une option sur ce contact. J'ai expérimenté un peu, en fixant l'argument du destinataire à nil ou à un tableau vide, mais cela n'a eu aucun effet.
Alors qu'est-ce que je rate ici ? Je suis proche, peut-être ? Mais il semble que le don d'interactions ne soit pas ce dont j'ai réellement besoin.
Mise à jour, en réponse à @Mark : Clarifié l'utilisation de activity
. J'ai essayé en utilisant response
(qui utilise activity
) et avec une valeur nulle pour response
mais aucun des deux n'a fonctionné.
0 votes
Avez-vous essayé de mettre le destinataire et l'expéditeur à zéro ?
0 votes
Où utilisez-vous
activity
? On dirait que vous le créez juste en haut et que vous n'en faites rien.0 votes
@Mark Bonne prise, merci. La question est mise à jour.
1 votes
Pouvez-vous poster une capture d'écran de ce à quoi cela ressemble lorsque vous créez un tout nouveau contact (sans WhatsApp) et que WhatsApp est une option ? Ainsi qu'une capture d'écran du moment où vous sélectionnez cette option et lancez ainsi WhatsApp. Je me demande comment cela peut être une option si l'identifiant WhatsApp n'est pas encore lié à la carte.