2012-01-17 15 views
8

Próbowałem znaleźć przykład podany w linku http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12, dla mojego powiadomienia push z iPhone'a. Mogłem z powodzeniem uruchomić wszystkie kroki, z wyjątkiem czynności związanych z rejestracją aplikacji po raz pierwszy w powiadomieniu push.Rejestrowanie aplikacji iPhone dla powiadomienia push nie działa

śledzę różne odmiany Kod:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

Ale żaden pracował dla mnie. Testuję to na moim iPhone 4, a moją wersją Xode jest 4.2, OS to Lion. Proszę o poradę.

+0

Z jakimi problemami stoisz? czy przejrzałeś ten link: http://mobiforge.com/developing/story/programming-apple-push-notification-services również http://stackoverflow.com/questions/8075255/push-notification-for-development-certificate/8075436 # 8075436 – Sarah

Odpowiedz

31

Można spróbować wykonać następujące czynności:

  • Upewnij się, że projekt Xcode jest skonfigurowany do korzystania z wyraźną identyfikator pakietu z portalu rezerw
  • Upewnij się, że nie budujemy w bramkę zamiennika lub udostępniana określona profilu zespołu, to sprawdzić na projekcie I ustawienia docelowe
  • Jeśli założyłeś zastrzegania profilu przed konfigurowanie identyfikatora aplikacja dla naciśnięciem, regenerują profilu zastrzegania

również spojrzeć obiektu błędu w metodzie UIApplicationDelegate

application:didFailToRegisterForRemoteNotificationsWithError: 

EDYT 1

Otwórz swój profil informacyjny w edytorze tekstu i poszukaj ciągu znaków

<key>aps-environment</key> 

Jeśli Twój profil nie zawiera tego, nie jest poprawnie skonfigurowany do wypychania.

+0

1) tak, mam jawny identyfikator pakunku 2) Nie korzystam z kart wieloznacznych, 3) Mam profil rezerwy regenerowanej i próbowałem ponownie uruchomić aplikację. – Vinod

+0

Jakim błędem uzyskujesz wspomnianą powyżej metodę delegowania? – nduplessis

+0

Zobacz powyższą edycję dotyczącą błędu rejestracji wypychania – nduplessis

0

Czy widziałeś kiedyś w oknie dialogowym powiadomienia o wypychaniu? Jeśli zamkniesz okno dialogowe, potrzeba 24 godzin na ponowne wyświetlenie. Sprawdź to, ustawiając czas na swoim telefonie iPhone przez 2 dni i sprawdź, czy się wyświetla.

Również ty realizowane metody Delegat:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { 

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 

Spróbuj położyć NSLog (@ „”) w didRegisterForRemoteNotificationsWithDeviceToken i didFailToRegisterForRemoteNotificationsWithError i zobaczyć, że jest tam robi?

Potrzebny jest również identyfikator aplikacji skonfigurowany do powiadamiania Push i konieczne jest wygenerowanie certyfikatów powiadomień Push w celu wysłania wiadomości.

+0

Tak, mam te metody. Ponadto mam identyfikator aplikacji z włączonymi usługami powiadomień push. – Vinod

+0

Otrzymuję wyjście NSlog dla metody "didFinishLaunchingWithOptions" nie dla innych. Teraz dostaję błąd Nie udało się uzyskać tokena, błąd: Error Domain = NSCocoaErrorDomain Code = 3000 "brak prawidłowego" uprawnienia do aps-environment "Znaleziono łańcuch uprawnień dla aplikacji" UserInfo = 0x1657c0 {NSLocalizedDescription = brak prawidłowego ciągu znaków "aps-environment" dla aplikacji} – Vinod

+0

Sprawdź, czy budujesz na podstawie właściwego pliku obsługi administracyjnej. Dla mnie to jest problem. Użytkownik musiałby utworzyć plik informacyjny przeciwko identyfikatorowi aplikacji za pomocą powiadomień push. – jodm

3

Oto mój kod Workin próbka z delegata aplikacji (AppDelegate.m)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound]; 
} 

Aby sprawdzić, czy rejestracja poszło OK, wdrożyć te trzy metody

– application:didReceiveRemoteNotification: 
– application:didRegisterForRemoteNotificationsWithDeviceToken: 
– application:didFailToRegisterForRemoteNotificationsWithError: 

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

czy można przejść do Ustawienia, aby sprawdzić, czy dostępne są ustawienia uprawnień

tak:

iPad Notification Settings

+0

Dodałem powyżej 3 metody, a następnie otrzymuję błąd w konsoli "Nie udało się pobrać tokena, błąd: Error Domain = NSCocoaErrorDomain Code = 3000" brak prawidłowego "uprawnienia do aps-environment" znalezionego ciągu uprawnień do aplikacji "UserInfo = 0x143bc0 { NSLocalizedDescription = brak prawidłowego ciągu uprawnień "aps-environment" dla aplikacji} "Ale aplikacja działa na iPhonie z pustym białym ekranem. Ponadto, nie uruchomiłem części payload/php kodu. – Vinod

+0

Dodałem opcję drukowania NSlog dla każdej metody, mogę uzyskać dane wyjściowe tylko z metody "didFinishLaunchingWithOptions", a następnie powyższy błąd. – Vinod

+0

@Vinod świetnie, teraz gdy masz odpowiedź błędu, możesz znaleźć, gdzie jest problem. Przeczytaj to: http://stackoverflow.com/questions/5681172/bundle-identifier-and-push-certificate-aps-environment-entitlement-error –

1

Jeśli problem pojawia się w produkcji (ze swojej aplikacji na AppStore), to bardzo prawdopodobne, bo stworzył/włączony tryb produkcyjny APNS swojej aplikacji PO konieczności utworzyłem profil dystrybucji.

W tym przypadku, nie ma innej opcji, ale aby ponownie złożyć z prawidłowym certyfikatem ...

Zasada: ZAWSZE włączyć/utworzyć certyfikat produkcji dla danej aplikacji PRZED tworzenia profilu dystrybucji.

Możesz użyć metody opisanej przez "nduplessis" (patrz poniżej), aby ręcznie sprawdzić, czy aplikacja uruchomi powiadomienie po zatwierdzeniu.

0

Przejdź do Możliwości ->Powiadomienia push. Jeśli są błędy, wypróbuj to rozwiązanie!

Jeśli zmieniono wersję Xcode od 7 do 8, wypróbuj to rozwiązanie!

Xcode 7 kopiuje uprawnienia do aps-environment z profilu informacyjnego. Włączenie powiadomień push w Xcode 8 dodaje uprawnienia zarówno do profilu obsługi administracyjnej, jak i do pliku uprawnień.

Spróbuj dodać uprawnienia do aplikacji typu aps-environment do pliku uprawnień aplikacji lub wyłącz i włącz funkcję powiadamiania.

Powiązane problemy