2015-12-18 15 views
9

Buduję stronę serwera dla aplikacji kalendarza. Strona klienta to tylko iOS. Pierwotny plan był taki, że aplikacja będzie znać zmiany zdarzeń iCal, a następnie powiadomi serwer. Ale to może być problem z przypomnieniami (przez Parse Push). Na przykład, jeśli wydarzenie zostało przesunięte do przodu, przypomnienie powinno pojawić się wcześniej.Odsłuchiwanie zmian zdarzeń iCal z serwera

Czy od strony serwera można otrzymywać powiadomienia o zdarzeniach iCal? Na przykład, gdy użytkownicy tworzą/aktualizują/usuwają zdarzenie iCal, które chcę poznać z serwera, aby pobrać te informacje. czy to możliwe? Czy też wszystko musi być wykonane przez natywną aplikację, która działa?

Mój serwer jest obecnie na stronie parse.com. Ale mógłbym użyć oddzielnego serwera, powiedz NodeJS, jeśli to konieczne.

Odpowiedz

5

Ponieważ iCal zależy od użytkownika/urządzenia, chyba że użytkownik zsynchronizował swoje zdarzenia kalendarza z iCloud. W drugim przypadku, w którym użytkownik aktywował synchronizację zdarzeń kalendarza, użytkownik końcowy nie jest w stanie udostępnić swoich informacji na temat serwera icloud innym serwerom.

Co powiesz na tworzenie 1 interfejsu API w backendie, który będzie aktualizował/usuwał żądania z aplikacji dla zdarzeń kalendarza, a które będą aktualizować zdarzenia powiadomienia Parse w procesie w tle. W tym celu możesz również napisać spersonalizowane Parse apis w NodeJS lub dowolnym innym stosie technologii.

A w aplikacjach, które można synchronizować wydarzenia z iCal używając Event Kit:

https://developer.apple.com/library/mac/documentation/DataManagement/Conceptual/EventKitProgGuide/ReadingAndWritingEvents.html#//apple_ref/doc/uid/TP40004775-SW1

3

pierwsze, trzeba móc pozwolić iOS obudzić aplikacji działających w tle, które wymaga, aby zaklasyfikuj swoją aplikację do jednego z trybów podanych w Apple Background Execution, myślę, że "Pobieranie w tle" jest odpowiednie w twoim przypadku, wtedy w twoim application:performFetchWithCompletionHandler: możesz sprawdzić bazę danych kalendarza dla zmienionych zdarzeń i wykonać niezbędne aktualizacje na serwerze.

+0

Pozwoliłoby to aplikacji obudzić się i wykonać pobieranie lub niektóre operacje w tle w tle, ale powiadomienie wypychane, które jest odbierane w aplikacji, musi zostać wyzwolone z serwera przez określone zdarzenie. To wydarzenie, najlepiej jest to zmiana przypomnień kalendarza i kalendarzy użytkownika. Co niestety może się zdarzyć, gdy aplikacja niestandardowa/osoba trzecia nie odczyta go przez eventkit i nie wykona synchronizacji z natywną aplikacją Kalendarz. –

+0

@JesseArmand problem będzie, gdzie można uzyskać powiadomienie o zmianie zdarzenia, istnieje wydarzenie zmiany kalendarza Apple, które można subskrybować, podczas gdy aplikacja natywnego systemu iOS działa na pierwszym planie, ale nie powiadomi ona aplikacji działającej w tle, dlatego należy zaproponować tło podejście do okresowego sprawdzania bazy danych kalendarza. – Allen

+0

Pobieranie w tle musi zostać wywołane przez coś, nie może po prostu uruchamiać się automatycznie, tak jak zadanie cron w środowisku serwera. Ten spust, o którym mówiłem, jest konieczny, aby tak się stało. –

1

myślę, że to jest najlepszy: https://stackoverflow.com/a/23997912/1967872

W swojej realizacji sposobu storeChanged: wymienionego w tej odpowiedzi, należy iterację wszystkich zdarzeń wykryć wszelkie zmiany i przedłożenia tych, serwer.

Powiązane problemy