2012-06-30 17 views
22

Robię aplikację do czatowania dla iPhone'a, ale nie jestem pewien, jak powinny przychodzić wiadomości od rozmowy.Czat iOS APNS, gniazdka lub interwał czasowy

Przeczytałem mnóstwo wyników Google na ten temat. Również raz:
- http://www.raywenderlich.com/3932/how-to-create-a-socket-based-iphone-app-and-server
- http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

APNS podejścia:
Niewidzialna zgłoszenie zostanie zepchnięty na iPhone, wskazując, że nowa wiadomość jest gotowa do odczytania. Aplikacja poprosi o nieprzeczytane wiadomości. Więc zamiast ręcznie odpytywać nowe wiadomości, pozwolę, aby APNS pomógł w tym. Ale nie jestem pewien?

Podejście do gniazd:
Tworzenie połączenia z gniazdem, które jest otwarte na udostępnianie danych. Po znalezieniu nowych wiadomości w db, będzie automatycznie wysyłać dane do aplikacji. Ale co z zasięgiem IP, zaporą ogniową, zużyciem energii, innymi rzeczami? znowu nie jestem pewien :(

podejście Polling:
Zrób odstęp czasowy gdzie sondować żądania, pobór mocy jest moim wrogiem tutaj

Moje pytanie:.
- Które podejście jest najlepiej
-? Inne sugestie
. - naprawdę muszę jakieś minusy i plusy od osób z doświadczeniem na ten temat

Przykłady to zawsze dobrze.
Dzięki

+2

Polling zapewnia niezawodność, lepsze opóźnienie i kontrolę limitu czasu, a dodatkowo możesz swobodnie wybierać sposób prezentowania danych. Dzięki Powiadomieniom push nie masz gwarancji, że Twoja wiadomość została pomyślnie dostarczona. Apple nie gwarantuje tego. Dlatego nie będę polegać na Apple, aby dostarczać wiadomości na czacie do moich użytkowników. – jweyrich

+2

Myślę, że źle zrozumiałeś pytanie. APNS nie powinien sam wysyłać wiadomości czatu, powinien tylko ... "szturchać"/"wywołać" aplikację, że niektóre nowe nieprzeczytane wiadomości są gotowe do odczytania. –

+0

Czego nie wiesz o metodzie APNS? Powiadomienia push nie wymagają wykonywania w tle, co jest dużą wygraną, ponieważ aplikacja w stanie zawieszonym oszczędza baterię. – jweyrich

Odpowiedz

6

Moim głównym problemem jest to, jak odbierać nowe wiadomości, gdy aplikacja jest w tle. Ponieważ nie jest tak, mam otwartą aplikację do przesyłania wiadomości przez cały dzień, gdy mogę otrzymywać powiadomienia za pomocą aplikacji takich jak WhatsApp.

Lepsze niż gniazda TCPIP można użyć websockets. Ponieważ jest to HTTP, nie ma problemów z firewallem, ALE wymaga to stałego połączenia z aplikacją na pierwszym planie, która powoduje wyczerpanie baterii.

Ponieważ tylko muzyka, lokalizacja lub głosowy adres IP mogą być uruchamiane w tle, nie można odpytać, chyba że aplikacja jest otwarta. Pamiętaj, że jeśli zarejestrujesz się w te zadania w tle i zrobisz coś innego, Apple zauważy i odrzuci twoją aplikację.

Dlatego używaj APNS. Tak właśnie działa WhatsApp.

+0

Dobre punkty. Nawet jeśli pozostanę przy APNS, nadal uważam, że przyszłość jest w jakiś sposób ... trwałe połączenia (gniazda lub inne rzeczy) - gdzie nie trzeba odświeżać ręcznie. Dzięki za przykład WhatsApp. –

+0

Naprawdę martwię się tylko częścią pierwszoplanową. Czy według twojej odpowiedzi przyjmuję, że WhatsApp polega wyłącznie na powiadomieniach push, aby wiedzieć, że musi pobierać nowe wiadomości, nawet gdy jest to aplikacja działająca na pierwszym planie? – figha