2013-03-19 13 views
7

Pracuję nad niektórymi aplikacjami na iOS, wszystkie pod tym samym wydawcą, które mają włączone powiadomienia push. Gdy zadzwonię pod numer registerForRemoteNotificationTypes, otrzymuję monit użytkownika o zezwolenie lub odrzucenie powiadomień push, ale I application:didRegisterForRemoteNotificationsWithDeviceToken: zostaje wywołany z danymi tokena przed użytkownik wybiera opcję. Zostanie wywołany ponownie po naciśnięciu OK. Czy to normalne?APNS didRegisterForRemoteNotifikacje wywoływane przed użytkownikiem pozwalają na powiadomienia w iOS

Uwaga: wiele aplikacji wydaje się otrzymywać ten sam token podczas pracy na tym samym urządzeniu.

+0

Nie jestem pewien co do głównego pytania, ale co do notatki - to normalne. Wszystkie aplikacje na tym samym urządzeniu otrzymują ten sam token urządzenia. – Eran

+0

Być może już wcześniej zezwoliłeś tej aplikacji na otrzymywanie powiadomień push. Wyszukaj swoją aplikację w ustawieniach-> powiadomienia, aby sprawdzić, czy już tam jest. – msk

+0

@MSK - Ale jeśli już na to pozwoliłem, to nie powinien pokazywać monit systemowy pytający użytkownika, czy chce zezwolić na powiadomienia push. Czy jestem w błędzie? –

Odpowiedz

6

To jest z dokumentacji Apple.

When you send this message, the device initiates the registration process with Apple Push Service. If it succeeds, the application delegate receives a device token in the application:didRegisterForRemoteNotificationsWithDeviceToken: method; if registration doesn’t succeed, the delegate is informed via the application:didFailToRegisterForRemoteNotificationsWithError: method. If the application delegate receives a device token, it should connect with its provider and pass it the token.

I

The first time a push-enabled app registers for push notifications, iOS asks the user if they wish to receive notifications for that app. Once the user has responded to this alert it is not presented again unless the device is restored or the app has been uninstalled for at least a day.

myślę co obserwujemy jest normalne. Nie ma żadnej wzmianki, że application:didRegisterForRemoteNotificationsWithDeviceToken zostanie wywołany tylko wtedy, gdy użytkownik udzieli pozwolenia. Myślę, że możesz ją zoptymalizować, buforując token urządzenia w NSUserDefaults iw tej metodzie sprawdź, czy nowy token nie jest równy buforowanemu tokenowi.

+0

Wydaje mi się nielogiczne uzyskanie tokena, jeśli powiadomienia push są wyłączone na poziomie systemu. Ale rzeczywiście, jeśli przejdę do Ustawień i wyłączy wszystkie elementy wypychania dla tej aplikacji, nadal otrzymuję wezwanie z tokena. Myślę, że masz rację. –

+0

co to jest włączanie powiadomień push, gdy aplikacja działa w tle. Po uruchomieniu go nie masz tokena na swoim serwerze, a iOS nie wywoła didFinishLaunchingWithOptions podczas uruchamiania go z tła. – msk

2

To stare pytanie, ale właśnie napotkałem ten problem i wydaje się, że jest on związany z trybem powiadomień zdalnych. application:didRegisterForRemoteNotificationsWithDeviceToken jest wywoływana na moim iPhonie przed zaakceptowaniem uprawnienia do wysyłania powiadomień tylko wtedy, gdy ten tryb tła jest włączony.

Powiązane problemy