nie znaleziono poprawnego ciągu uprawnienia „aps-environment” dla aplikacji

83

Próbuję skonfigurować moją aplikację do obsługi powiadomień wypychanych, ale nadal otrzymuję ten błąd: Nie udało się uzyskać tokena, błąd: Error Domain = NSCocoaErrorDomain Code = 3000 „Nie znaleziono prawidłowego ciągu uprawnienia„ aps-environment ”dla aplikacji” UserInfo = 0x1f818fc0 { NSLocalizedDescription = nie znaleziono prawidłowego ciągu uprawnienia „aps-environment” dla aplikacji}

  • Zrobiłem, że moja aplikacja obsługuje powiadomienia push (tylko w tym momencie).
  • Utworzyłem profil aprowizacji PO włączeniu powiadomień push.
  • Identyfikator mojego pakietu jest taki sam, jak wyświetlany w profilu.
  • W moim pliku profilu znajduje się ciąg: aps-environment
  • Upewniłem się, że zarówno w projekcie, jak i miejscu docelowym w sekcji „Tożsamość podpisywania kodu” WSZYSTKIE wartości są wybrane jako mój profil obsługi administracyjnej.

Masz więcej pomysłów? Dzięki.

bashan
źródło
Brak wglądu na ten temat? Wygląda na to, że wielu może napotkać ...
bashan

Odpowiedzi:

64

W moim przypadku rzeczy w moim profilu aprowizacji:

security cms -D -i ~/Downloads/spolskyDevelop.mobileprovision 
...
<key>application-identifier</key>
<string>P5GM95Q9VV.com.dca.spolsky</string>
<key>aps-environment</key>
<string>development</string>

Różnił się od rzeczy w aplikacji, która została faktycznie zbudowana (możesz dowiedzieć się, gdzie jest zbudowana, patrząc na kartę Dzienniki Xcode)

codesign -d --entitlements - '/Users/drew/Library/Developer/Xcode/DerivedData/spolsky-bdbtdfjeeywhqzccpmmceqvnhgtm/Build/Products/Debug-iphoneos/spolsky-ios.app'
<dict>
    <key>application-identifier</key>
    <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    <key>get-task-allow</key>
    <true/>
    <key>keychain-access-groups</key>
    <array>
        <string>Y2X6Z7Z2GR.com.dca.spolsky-ios</string>
    </array>
</dict>

To prawda, mimo że tekst podpowiedzi „Aktualnie pasuje” w sekcji Tożsamość podpisywania kodu wskazywał prawidłowy profil obsługi administracyjnej - dziwne, co? Aby ta dziwna historia była jeszcze dziwniejsza, na urządzeniu był instalowany prawidłowy profil obsługi, kiedy uruchomiłem (Ustawienia-> Ogólne-> Profile), co doprowadziło mnie do przekonania, że ​​profil aprowizacji był prawidłowy - ale wracał do identyfikatora wieloznacznego kiedy aplikacja została faktycznie uruchomiona .

Wskazówką była różnica w wynikach tych dwóch poleceń:

Y2X6Z7Z2GR .com.dca. spolsky-ios vs P5GM95Q9VV .com.dca. spolsky

Kiedy dopasowałem pogrubioną część, część zapisana kursywą zmieniła się, aby dopasować automatycznie. Ponadto dane wyjściowe związane z bezpieczeństwem i kodem były zgodne i nie było więcej błędów związanych z uprawnieniami aps.

Domyślam się, że XCode używał dopasowania w stylu symboli wieloznacznych w moim identyfikatorze nie-wieloznacznym. („spolsky” to w końcu prawie „spolsky-ios”), co wyjaśnia wynik „Obecnie dopasowań”. Ale coś w łańcuchu kompilacji jest bardziej rygorystyczne, więc podczas kompilacji wraca do rzeczywistego identyfikatora wieloznacznego .

Rysował
źródło
7
Doświadczyłem podobnego problemu: „Ustawienia kompilacji” projektu różniły się od „Ustawień budowania” DOCELOWYCH… w moim przypadku ustawienia docelowe były domyślnie ustawione na niewłaściwe profile udostępniania.
Rob
1
Dzięki odkryciu tego, napotkałem ten sam problem.
Codemonk
1
Jeden z moich współpracowników miał problem z obsługą administracyjną. Jednak mogłem wybrać klucz obsługi bez symboli wieloznacznych dopiero po przejściu do ustawień profilu w Xcode i odświeżeniu listy certyfikatów / kluczy obsługi.
cbh2000
1
Moje ustawienia docelowe dla „debugowania” korzystały z iOS Developer / Automatic, co powodowało, że moja aplikacja .app wyświetlała nieprawidłową tożsamość podpisywania kodu. Musiałem jawnie ustawić ustawienia mojego projektu i celu zarówno dla debugowania, jak i wydania, aby użyć mojego nowego identyfikatora podpisywania kodu, mój problem został rozwiązany. To nie tylko Twój profil obsługi administracyjnej, musisz też sprawdzić te tożsamości podpisujące kod. Nie mógłbym tego rozwiązać bez tych niesamowitych poleceń terminala!
self.name
6
Tylko dla przypomnienia: do powiadomień push do pracy, trzeba użyć specyficznego Provisioning Profile, z wiązki ID aplikacji, a nie jedną z * zamiennika.
mgarciaisaia
37

Problem jest spowodowany 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, aby usunąć błąd.

Raptor
źródło
U mnie to nie zadziałało. Wszelkie inne wskazówki. proszę spojrzeć na to: stackoverflow.com/questions/25679750/ ...
Ajeet
29

Miałem ten sam problem po tym, jak powiadomienia push działały już na moim urządzeniu. Wyglądało na to, że Xcode zapisał coś nieprawidłowo w pamięci podręcznej, więc odświeżenie go rozwiązało mój problem:

  1. Xcode -> Preferencje -> Konta
  2. Wyświetl szczegóły swojego konta programisty
  3. Wystarczy kilka razy kliknąć Odśwież dla profili aprowizacji. Widziałem te zmiany przy każdym odświeżaniu. Odświeżaj, aż przestaną się zmieniać.
Oren
źródło
Co dziwne, to zadziałało dla mnie! Odświeżałem, aż przestał się aktualizować, potem wyczyściłem folder kompilacji, a następnie ponownie uruchomiłem XCode. Stało się to po tym, jak zweryfikowałem identyfikator pakietu w profilu aprowizacji i zbudowanej aplikacji (gdzie pasował do obu, co jeszcze bardziej mnie zdumiewało).
Sean Michael Dorian
Nie ma już przycisku Odśwież (?)
Gerry
9

Otrzymałem ten błąd i nie utworzyłem nowego profilu informacyjnego; utworzył nowy, a następnie musiał ponownie uruchomić xCode, ale teraz działa!

jasonpurdy
źródło
9

Należy pamiętać, że identyfikator pakietu musi być zgodny z profilem aprowizacji z uwzględnieniem wielkości liter . Miałem coś takiego jak com.FirstLast.appname, podczas gdy powinno to być com.firstlast.appname. Cóż, to zajęło mi jakiś czas.

sudo
źródło
Miałem ten sam problem, to rozwiązało go za mnie.
kuba
9

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

Wybierz Projekt> Cel> Możliwości> Włącz powiadomienia push

sprawdź obraz

błąd 404
źródło
3

Jeśli ten problem wystąpił nagle po aktualizacji do Xcode 8, możesz znaleźć ostrzeżenie na ekranie możliwości, które pozwoli ci to naprawić automatycznie:

Wybierz Projekt> Cel> Możliwości> Włącz powiadomienia push

Departamento B
źródło
To właśnie uratowało mnie od bólów głowy. Dzięki!
jpaljasma
2

Produkt-> Clean zrobił to za mnie. Miejmy nadzieję, że zrobi to dla kogoś innego.

Louis Cremen
źródło
czyści oba. Pomocne jest również czyszczenie wtórne za pomocą polecenia-opcja-shift-k.
zwrócił ..
2

Natknąłem się na to w prawdopodobnie rzadkim przypadku użycia. Pracuję z Xcode 6 i iOS 8. Tworzyłem serię zupełnie nowych projektów aplikacji i próbowałem ponownie użyć tego samego identyfikatora pakietu, aby nie musieć ponownie przechodzić przez całą konfigurację po stronie portalu. To też było tylko do testowania w piaskownicy.

Uważam, że chociaż konfiguracja i rejestracja działałyby dobrze dla pierwszej aplikacji, gdybym usunął tę aplikację z urządzenia, ustawił ten sam identyfikator pakietu dla drugiej aplikacji, a następnie spróbował zarejestrować PN w tej aplikacji, dostałbym ten błąd.

Moim rozwiązaniem było:

  1. Usuń powiązany profil obsługi administracyjnej z urządzenia.
  2. Usuń powiązany profil informacyjny z Xcode.
  3. Zamknij Xcode
  4. Kliknij dwukrotnie mój pobrany .mobileprovisionplik, aby zainstalować go z powrotem w Xcode
  5. Otwórz projekt i wdróż go.

Wydaje się, że takie podejście powoduje utratę jakiegokolwiek poprzedniego stanu i jestem w stanie zarejestrować się dla PN z nowym identyfikatorem aplikacji / pakietu.

KevinH
źródło
2

Dla tych, którzy otrzymali ten błąd w iOS 10, możesz spróbować wykonać następujące czynności:

1. wyczyść swój projekt.
2. i zaznacz Cele -> Możliwości -> Powiadomienie push. Jeśli jest wyłączone, włącz.

I problem się rozwiąże.Powyższe kroki pomogą mi pozbyć się tego problemu. Mam nadzieję, że komuś to pomoże.

bittu
źródło
0

Nowy profil aprowizacji zadziałał dla mnie. Upewnij się, że używasz profilu programisty, jeśli jesteś w fazie rozwoju (nie używaj Ad Hoc). Potem było dobrze, nie mam pojęcia, dlaczego stary przestał działać.

user3344717
źródło