Mam więc tę aplikację o nazwie Dripper, którą opublikowałem około miesiąca temu, a następnie aktualizację kilka dni temu. Aktualizacja dodała powiadomienia push i kilka drobnych poprawek. Przetestowałem to z piaskownicą-apn używając profilu programistycznego i wszystko działało świetnie. Potem przełączyłem się na produkcyjny apn i pchnąłem go do lotu testowego, znowu wszystko działało idealnie. Po wprowadzeniu aktualizacji na rynek i uruchomieniu jej zauważyłem, że nie otrzymuję żadnych nowych rejestracji push na serwerze. Przejrzałem dzienniki konsoli urządzenia i znalazłem to:
4 grudnia 17:55:15 Ina-touch-it coffco [1210]: Rejestracja dla zdalnych powiadomień
4 grudnia 17:55:15 Ina-touch-it SpringBoard [52]: Nie znaleziono poprawnego ciągu uprawnień „aps-environment” dla aplikacji 'Dripper': (null). Powiadomienia nie będą dostarczane.
4 grudnia 17:55:15 Ina-touch-it coffco [1210]<Warning>: Failed to register with error : Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' entitlement string found for application" UserInfo=0x174270900 {NSLocalizedDescription=no valid 'aps-environment' entitlement string found for application}
Jestem trochę zdezorientowany, ponieważ myślałem, że apn produkcyjny będzie działał tak samo między kompilacjami ad-hoc i App Store.
Oto mój identyfikator aplikacji i jego uprawnienia -> http://i.stack.imgur.com/uf4pB.png
Oto profil aprowizacji dla sklepu z aplikacjami -> http://i.stack.imgur.com/AYOV5.png
Odpowiedzi:
Rozwiązuję ten problem, włączając możliwość powiadamiania push.
Kliknij .xcodeproj -> Możliwości -> Włącz powiadomienia push
źródło
Naprawiłem ten problem w ten sposób:
I spróbuj ponownie!
Źródło:
źródło
Musisz włączyć Cel -> możliwości -> powiadomienia push. Napotkałem ten problem przy użyciu Xcode 8.
źródło
Takie problemy są spowodowane tym, że bieżący profil obsługi administracyjnej nie zawiera informacji APNS, ponieważ profil obsługi administracyjnej jest tworzony PRZED utworzeniem certyfikatu APNS.
Dlatego, aby rozwiązać problem, utwórz nowy profil obsługi administracyjnej i wybierz profil obsługi administracyjnej w Xcode. Wtedy jesteś ZROBIONY.
Wydaje mi się, że po dodaniu push zaktualizowałeś również certyfikaty w pęku kluczy.
źródło
Jeśli chodzi o Xcode 9, niektóre odpowiedzi są nieaktualne lub niekompletne, aby rozwiązać ten konkretny problem.
Oto kroki, które musiałem wykonać:
1. Utwórz profil obsługi administracyjnej
( FCM nie jest warunkiem wstępnym dla powiadomień push, ale ich przewodniki są zdumiewająco jasne, oto link )
Aby przetestować aplikację w trakcie opracowywania, potrzebujesz profilu aprowizacji do programowania, aby autoryzować swoje urządzenia do uruchamiania aplikacji, która nie została jeszcze opublikowana w App Store.
2. Aktywuj funkcje powiadomień push
źródło
Miałem ten sam problem z iOS 8.0 i nowszymi wersjami; Nie otrzymałem tokena urządzenia i wyświetlałem błąd: „nie znaleziono poprawnego ciągu uprawnień„ aps-environment ”dla aplikacji”
Naprawiłem to, wykonując poniższe kroki
a teraz uruchom projekt na pewno zadziała.
źródło
Z jakiegoś powodu rozwiązanie Wei nie działało dla mnie. Po kliknięciu opcji Napraw uprawnienia Xcode wygenerował dwa pliki i nadal nie działał, w rzeczywistości wygenerowane pliki uprawnień były puste.
Było to (najwyraźniej) spowodowane tym, że PRODUCT_NAME projektu był dość długi i zawierał spacje oraz litery „ä” i „ö”. Po zmianie na krótką wersję z literami tylko po angielsku poprawka Wei działała poprawnie.
źródło
Zajęło mi trochę czasu, aby dowiedzieć się, co powoduje brak prawidłowego błędu uprawnień środowiska aps. Problem polegał na tym, że w projekcie XCode były dwa pliki .entitlements. Jeden z nich to uprawnienia platformy / ios //., A drugi to platforma / ios // Zasoby / .entitlements, a odpowiednie uprawnienia są obecne w pierwszym pliku tylko wtedy, gdy XCode jest skonfigurowany do korzystania z drugiego. Zaktualizowałem ten ostatni plik ręcznie i wszystko zaczęło działać. Inną opcją rozwiązania tego problemu jest zmiana pliku .entitlements używanego przez XCode. Można to zrobić w Ustawienia kompilacji -> Podpisywanie -> Parametr konfiguracji uprawnień do podpisywania kodu.
Nie jestem pewien, dlaczego w XCode są dwa pliki .entitlements. Czy to możliwe, że wtyczka push cordova stworzyła drugą (tworzę aplikację mobilną hybrid cordova)? Jaka jest prawidłowa lokalizacja pliku .entitlements?
źródło
Doświadczyłem tego problemu i rozwiązałem go za pomocą pierwszego rozwiązania.
Jednak raz mi się nie udało, ponieważ miałem zalogowane dwa konta Apple. Po usunięciu jednego wszystko zaczęło działać.
źródło