Inviter des participants à un événement par programmation sur iOS 10

J’utilise Stackoverflow depuis environ 5 ans et je n’ai pas encore ressenti le besoin de poser une seule question. J’ai toujours trouvé la réponse à mes questions précédentes. Cela a juste changé et j’ai une question que je ne peux vraiment pas comprendre. Et cela semble si facile à faire.

Donc, la question est: Comment invitez-vous les participants ou répondez-vous / refusez-vous aux événements du calendrier sur iOS sous iOS 10? Et s’il vous plaît, non, nous ne voulons pas faire apparaître un EKEventViewController. Nous aimerions faire cela dans notre propre interface utilisateur. Sous iOS 9, cela était possible en forçant simplement les objects EKAttendees dans le tableau EKParticipants avec setValueForKey :. Mais sous iOS 10, cela produit une erreur en disant “Les participants ne peuvent pas être modifiés”.

J’ai utilisé un crédit d’assistance technique avec Apple et j’ai reçu la réponse que cela n’était pas possible. Ce n’est pas possible d’utiliser leurs API.

Le plus proche d’une réponse est d’utiliser IMIP ( https://tools.ietf.org/html/rfc6047#section-2.2.1 ). Si c’est le chemin à parcourir, est-ce que quelqu’un pourrait m’aider à définir cela? Je ne suis pas très familiarisé avec le développement back-end, je suis tout à fait front-end donc je ne saurais pas vraiment par où commencer.

Il semble aussi y avoir quelques serveurs CalDav sur GitHub ( https://github.com/mozilla-b2g/caldav ) mais je ne suis pas sûr de leur qualité ou de ce dont vous avez besoin pour en créer un.

Donc, en gros, y a-t-il quelqu’un qui pourrait expliquer à un enfant à quel point nous pouvons envoyer des invitations agréables à des événements de calendrier? Et s’il existe différentes solutions pour Google, il serait très utile de connaître les comptes Apple (évidemment sous le capot, mais en termes de mise en œuvre).

Est-ce quelque chose qui nécessite une tonne d’implémentation sur nos propres serveurs ou existe-t-il un service fiable à utiliser? Ce serait idéal. Peut-être que vous devriez en construire un et vous avez au moins un client ici 🙂

Appréciez toute aide!

Vous ne pouvez pas modifier les participants en utilisant EventKit, mais Apple vous a déjà dit que:

J’ai utilisé un crédit d’assistance technique avec Apple et j’ai reçu la réponse que cela n’était pas possible. Ce n’est pas possible d’utiliser leurs API.

Le piratage lié à l’access aux objects internes à l’aide de KVC était, bien, une API piratée et non documentée. Pas de surprise, ils ont tué ça.

Alors, comment le calendrier invite-t-il au travail? Cela en soi est un sujet très complexe (pensez à la délégation, à la réservation de ressources comme les chambres, etc.). Il y a tout un consortium qui travaille là-dessus ( CalConnect ), ils ont aussi un aperçu général: Introduction à la planification et à la planification Internet . Si vous êtes sérieux dans le logiciel de planification / calendrier, il peut être très logique de rejoindre CalConnect pour leurs événements d’interopérabilité, etc.

Mais vous vouliez une explication de l’enfant. Je ne peux pas donner cela, mais un bref aperçu.

iTIP

iTIP est une norme qui définit la manière dont les messages de planification sont acheminés. Par exemple, vous envoyez un message à vos participants, votre participant répond en acceptant / refusant, ce qui se passe si une réunion est annulée et tout le rest.

Cependant, il ne spécifie PAS comment ces messages sont transférés. Il ne s’agit que d’un modèle sur le fonctionnement du stream de messages entre l’organisateur et les participants.

La plupart des «grands» systèmes de calendrier (Exchange, Google, serveurs CalDAV comme iCloud) utilisent le protocole iTIP ou du moins quelque chose de très similaire.

iMIP

iMIP est une norme qui définit comment échanger des messages iTIP par courrier électronique. Disons que si vous invitez une personne utilisant iMIP, vous lui enverrez un message électronique spécial contenant la charge utile iCalendar contenant l’invitation. Si votre participant accepte, son client renverra une autre charge utile iCalendar par courrier électronique contenant cette information.

iMIP est supporté par de nombreux systèmes et a été, pendant longtemps, le seul moyen d’échanger des invitations entre différents systèmes (par exemple, Outlook et Lotus Notes).

Cependant, le client de messagerie iOS ne prend pas en charge le protocole iMIP (contrairement à MacOS ou Outlook). Donc, si quelqu’un vous envoie une invitation iMIP sur votre appareil iOS, vous ne pourrez pas y répondre. (la réalité est plus complexe, mais fondamentalement c’est comme ça)

CalDAV

CalDAV est un ensemble de normes autour des calendriers stockés sur un serveur. Beaucoup de serveurs supportent CalDAV. Par exemple, iCloud utilise CalDAV. Yahoo, Google, etc. tous soutiennent CalDAV. La principale exception est Exchange, qui ne le prend pas en charge.

Dans sa configuration de base, CalDAV agit simplement comme un magasin. Vous pouvez utiliser HTTP pour stocker (PUT) et récupérer (GET, etc.) des événements et des todos au format iCalendar.

En outre, de nombreux serveurs CalDAV (par exemple, iCloud) effectuent une «planification côté serveur». En d’autres termes, si vous stockez un événement sur le serveur qui est une réunion (possède les propriétés du participant), le serveur déploiera les invitations. Soit en interne si les participants vivent sur le même serveur, ou encore via iMIP.

Échange

Exchange prend en charge iMIP mais pas CalDAV. Vous y accédez généralement à l’aide de l’une de ses propres API de service Web, par exemple ActiveSync ou Exchange Web Services. Je ne suis pas un expert sur eux, mais je suis sûr qu’ils vous permettent de créer des invitations. Exchange & Outlook ont ​​un stream iTIP comme invitation.

etc

Est-ce quelque chose qui nécessite une tonne d’implémentation sur nos propres serveurs ou existe-t-il un service fiable à utiliser?

Cela dépend vraiment de vos besoins et exigences. Devez-vous traiter les réponses ou simplement envoyer des événements génériques? Si vous souhaitez héberger un magasin de calendrier, il est probablement logique d’utiliser un serveur CalDAV existant.

Les invitations de calendrier sont un sujet très complexe et vous devez être très précis sur vos besoins réels pour trouver une solution. En général, les invitations interopérables en 2017 sont encore, disons «difficiles».

PS: Depuis que vous utilisez StackOverflow depuis environ 5 ans, sachez que cette question est trop vaste pour ce sujet.