Nie znaleziono prawidłowego ciągu uprawnienia „aps-environment” dla aplikacji w sklepie z aplikacjami


103

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


Tutaj jest podpisywany i przesyłany -> i.stack.imgur.com/AziCI.png Ustawienia kompilacji -> i.stack.imgur.com/j2TFG.png
Jessiah

Odpowiedzi:


282

Rozwiązuję ten problem, włączając możliwość powiadamiania push.

Kliknij .xcodeproj -> Możliwości -> Włącz powiadomienia push


15
W XCode 8 widziałem błąd w tej sekcji informujący, że należy dodać plik uprawnień. Kliknąłem na to, aby to poprawić, a potem działało dobrze.
Pellet

Dopiero niedawno pojawił się, gdy zaczął się rozwijać w Xcode 8 i to naprawiło. Dzięki!
Kody R.

Wcześniej pracowałem na Xcode 7.3, ale nagle nie rejestrowałem się w Xcode 8, ale to rozwiązało mój problem, włączając funkcję powiadomień push.
Vinod Rathod

Apple postanawia ukryć tę opcję gdzieś głęboko w Xcode 8.1. Daj mi znać, jeśli ktoś będzie w stanie go znaleźć.
Thomas Sebastian

Nie dostałem opcji „Powiadomienia push” na liście możliwości. Miało to coś wspólnego z faktem, że XCode automatycznie generował mój profil aprowizacji (jestem nowy w programistach iOS, więc mogę się mylić ...). Musiałem zalogować się na swoje konto programisty i ręcznie utworzyć profil aprowizacji dla mojej aplikacji, zanim wyświetliła się powiadomienia push na liście możliwości. Wreszcie włączenie go rozwiązało ten problem.
Max Mumford

103

Naprawiłem ten problem w ten sposób:

  • Przejdź do „Preferencji” Xcode
  • Przejdź do zakładki „Konta”
  • Wybierz mój Apple ID i kliknij „Wyświetl szczegóły”
  • Kliknij strzałkę w lewym dolnym rogu, aby odświeżyć
  • Kliknij „Gotowe”

I spróbuj ponownie!

Źródło:


6
następnie należy wybrać odpowiedni profil obsługi administracyjnej w ustawieniach kompilacji
Hashem Aboonajmi

2
W moim przypadku musiałem zregenerować profile aprowizacji w centrum deweloperów. Następnie ponownie pobierz wszystkie profile i certyfikaty za pomocą Xcode> preferencje> Konta> Twój Apple ID> przycisk Wyświetl szczegóły w prawym rogu> przycisk Pobierz wszystko. Po tym powinno działać ponownie.
blackjacx

2
To smutne, że w procesie wypychania i wdrażania jest tak wiele usterek. Jedynym sposobem, w jaki mogę to tolerować, jest zrobienie wszystkiego ręcznie w 100% i wiedza, co Xcode próbuje zrobić, oraz zarządzanie tożsamościami pęku kluczy i profilami obsługi administracyjnej w systemie plików i za pomocą narzędzia konfiguracyjnego iPhone'a.
Tom Pace,

57

Musisz włączyć Cel -> możliwości -> powiadomienia push. Napotkałem ten problem przy użyciu Xcode 8.wprowadź opis obrazu tutaj


18

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.


Profil, którego używam, został utworzony po utworzeniu certyfikatu dla produkcji push apn. Czy jest coś, co mogę zrobić, aby potwierdzić, że brakuje go lub że zawiera informacje APNS?
Jessiah,

@Jessiah: Nie… To tak, jakbyśmy musieli podążać śladami dostarczonymi przez Apple.
Fahim Parkar

6

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.

  1. Przejdź do Apple Developer Member Center i zaloguj się.
  2. Przejdź do certyfikatów, identyfikatorów i profili.
  3. W menu rozwijanym w lewym górnym rogu wybierz iOS, tvOS, watchOS, jeśli nie jest jeszcze zaznaczone, a następnie przejdź do Profile aprowizacji> Wszystkie.
  4. Kliknij przycisk +, aby utworzyć nowy profil obsługi administracyjnej.
  5. Wybierz iOS App Development jako typ profilu aprowizacji, a następnie kliknij Continue.
  6. W menu rozwijanym wybierz identyfikator aplikacji, którego chcesz użyć, a następnie kliknij przycisk Kontynuuj.
  7. Wybierz certyfikat iOS Development dla identyfikatora aplikacji, który wybrałeś w poprzednim kroku, a następnie kliknij Kontynuuj.
  8. Wybierz urządzenia iOS, które chcesz uwzględnić w profilu obsługi administracyjnej, a następnie kliknij przycisk Kontynuuj. Pamiętaj, aby wybrać wszystkie urządzenia, których chcesz użyć do testów.
  9. Wpisz nazwę tego profilu informacyjnego (np. Przykładowy profil tworzenia aplikacji Firebase), a następnie kliknij Wygeneruj.
  10. Kliknij Pobierz, aby zapisać profil obsługi administracyjnej na komputerze Mac.
  11. Kliknij dwukrotnie plik profilu aprowizacji, aby go zainstalować.

2. Aktywuj funkcje powiadomień push

  1. Przejdź do edytora projektów, z oficjalnego podręcznika wprowadź opis obrazu tutaj
  2. W sekcji możliwości Aktywuj powiadomienie push wprowadź opis obrazu tutaj

4

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

  • Utworzyłem nowy profil obsługi administracyjnej dla identyfikatora aplikacji
  • dodał go do xcode
  • projekt Przejdź do „Preferencji” Xcode
  • Przejdź do zakładki „Konta” Wybierz mój Apple ID i kliknij „Wyświetl szczegóły”
  • wybierz swój profil obsługi
  • Kliknij strzałkę w lewym dolnym rogu, aby odświeżyć
  • Kliknij „Gotowe”

a teraz uruchom projekt na pewno zadziała.


3

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.


1

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?


-1

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ć.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.