Jak naprawić błąd „nie znaleziono poprawnego ciągu uprawnień„ aps-environment ”dla aplikacji” w Xcode 4.3?

153

Bardzo się starałem stworzyć prostą, prostą aplikację na iOS, która może odbierać powiadomienia push. Jedynym powodem, dla którego to robię, jest ustanowienie procedury, z której mogliby korzystać inni członkowie zespołu, i nie byli w stanie znaleźć aktualnej, działającej wersji takich instrukcji w innym miejscu w sieci. Nasz sklep jest całkiem nowy dla programistów iOS, osobiście nie mam doświadczenia w programowaniu iOS i Xcode. Natknąłem się na dziesiątki samouczków, artykułów i postów o problemach z Apple i innych miejsc i czuję, że mogę być prawie na miejscu ...

Oto, gdzie muszę (uwaga, używam Xcode 4.3 i początkowo próbuję wdrożyć tylko na iOS 5.1 i rozumiem, że niektóre rzeczy mogły się ostatnio zmienić w porównaniu z wcześniejszymi wersjami Xcode, ale znowu jestem nowy dla wszystkich to - i uznając to za całkowicie zagmatwane i zagmatwane):

1) Mam profil informacyjny na moim iPhonie z włączoną opcją Push

2) W moim testowym projekcie Xcode mam ten profil aprowizacji wybrany jako tożsamość podpisu (w Ustawieniach kompilacji> Podpisywanie kodu)

wprowadź opis obrazu tutaj

3) Mam identyfikator pakietu w obszarze Podsumowanie i informacje> Niestandardowe właściwości docelowe systemu iOS ustawione prawidłowo * (myślę?)

4) Mam wywołanie registerForRemoteNotificationTypes w didFinishLaunchingWithOptions mojego delegata

5) Mam didRegisterForRemoteNotificationsWithDeviceToken i didFailToRegisterForRemoteNotificationsWithError w moim pełnomocniku, skonfigurowałem odpowiednio do logowania tokenu urządzenia lub błędu

6) Mam zaznaczone Włącz uprawnienia w Podsumowaniu.

7) Tuż pod wybranym plikiem uprawnień jest Tinker6 (nazwa mojego projektu testowego), który został wygenerowany automatycznie, gdy zaznaczyłem opcję Włącz uprawnienia

8) W pliku Tinker6.entitlements mam następujące informacje (które zebrałem są poprawne na podstawie kilku różnych postów w całej sieci, ale nie mogę znaleźć niczego ostatecznego w samym Apple):

wprowadź opis obrazu tutaj

Zaktualizowano

9) Ponadto wypróbowałem całość bez pliku uprawnień i otrzymałem zasadniczo ten sam wynik.

10) Zawartość mojego pliku mobileprovision zawiera poprawnie uprawnienia (zaszyfrowałem numer i domenę, ale strukturalnie są takie same):

<key>application-identifier</key>
<string>12355456A7.com.whatever.tinker</string>
<key>aps-environment</key>
<string>development</string>
<key>get-task-allow</key>
<true/>
<key>keychain-access-groups</key>
<array>
    <string>12355456A7.*</string>
</array>

/ koniec aktualizacji

Kiedy próbuję uruchomić to na moim urządzeniu, pojawia się następujący błąd w danych wyjściowych Xcode:

2012-06-11 12:45:23.762 Tinker6[13332:707] Failed to get token, error: 
Error Domain=NSCocoaErrorDomain Code=3000 "no valid 'aps-environment' 
entitlement string found for application" UserInfo=0x24a3b0 
{NSLocalizedDescription=no valid 'aps-environment' entitlement string 
found for application}

Próbowałem ustawić get-task-allow na NO, aps-environment to production, wszystkie cztery możliwe kombinacje, to samo.

Jak mogę to obejść? Gdzie jest ostateczna dokumentacja na ten temat?

- następuje dalsze tło -

* Jeśli chodzi o identyfikator pakietu, nadal nie wiem, jak należy to ustawić w odniesieniu do identyfikatorów aplikacji i identyfikatorów profilu w profilu aprowizacji. W portalu obsługi administracyjnej pod identyfikatorami aplikacji mam to (ponownie zaszyfrowałem numer i domenę):

wprowadź opis obrazu tutaj

A identyfikator zestawu dwóch miejsc jest ustawiony, mam to:

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

Wcale nie jestem pewien, czy są one poprawne, ani czy jeden lub oba powinny być ustawione na 12355456A7.com.cokolwiek.tinker, chociaż wypróbowałem je wcześniej bez powodzenia ...

Uwaga: Zdaję sobie sprawę, że istnieje wiele postów o podobnych tytułach, jednak wszystkie wydają się być nieaktualne w oparciu o podane nazwy plików i inne, a także fakt, że żadne z rozwiązań nie wydaje się przydatne. Mam nadzieję, że wyższy poziom szczegółowości zagwarantuje dobrą odpowiedź. Prawdopodobnie przydzielę nagrodę tak szybko, jak to możliwe, a jeśli udzielisz wysokiej jakości odpowiedzi, która prowadzi do rozwiązania, nagrodzę Cię, a także będę promować Twoją odpowiedź na Twitterze i moim blogu. Zwłaszcza jeśli opublikujesz naprawdę dobry „tutaj jest dokładnie 500 kroków, których potrzebujesz, aby uzyskać prostą aplikację powiadomień push działającą, w tym obsługę administracyjną i cokolwiek innego” na swoim blogu lub cokolwiek innego.

jwl
źródło

Odpowiedzi:

94

Jeśli utworzyłeś swój profil informacyjny przed skonfigurowaniem app IDdo wypychania, spróbuj ponownie wygenerować profil informacyjny.

Portal obsługi administracyjnej iOS -> Obsługa administracyjna -> Twój certyfikat -> EDYTUJ -> Wprowadź edycję -> Pobierz nową obsługę administracyjną

Pracował dla mnie. Teraz mogę używać push.

elp
źródło
czy możesz sprecyzować, co dokładnie oznacza „ponowne utworzenie profilu aprowizacji”? Czy to jest krok w XCode, w portalu obsługi administracyjnej, gdzie? dzięki!
jwl
2
W portalu. Po prostu dodaj lub usuń urządzenie, a Twoja obsługa administracyjna zostanie wygenerowana. Następnie kliknij dwukrotnie i zainstaluj w swoim pęku kluczy.
elp
przepraszam, jeśli jestem gęsty, ale dodaj / usuń go w obszarze Urządzenia? Lub gdzieś poniżej właściwego profilu obsługi administracyjnej, a jeśli tak, to gdzie?
jwl
Dodawanie lub usuwanie urządzeń to sztuczka polegająca na regeneracji obsługi administracyjnej. Aby korzystać z powiadomień push, musisz je zregenerować, ponieważ jest powiązany z identyfikatorem aplikacji i certyfikatem push ..
elp
69

Przede wszystkim nie potrzebujesz pliku uprawnień, chyba że dodajesz niestandardowe pary klucz / wartość, które nie istnieją w profilu informacyjnym. Po utworzeniu aplikacji wszelkie uprawnienia z profilu informacyjnego zostaną skopiowane do aplikacji.

Biorąc pod uwagę, że nadal widzisz komunikat o błędzie dotyczący brakujących uprawnień, mogę tylko założyć, że opcje podpisywania kodu są nieprawidłowe w ustawieniach kompilacji.

Musisz upewnić się, że dla konfiguracji „Debugowania” jest wybrany prawidłowy profil, oraz dla bezpieczeństwa, że ​​wybrałeś prawidłowy profil zarówno dla „Debugowania”, jak i węzła podrzędnego z etykietą „Dowolny pakiet SDK systemu iOS”:

wprowadź opis obrazu tutaj

Chociaż ten zrzut ekranu pokazuje wybrany profil „Automatyczny programista”, wybierz dokładny profil informacyjny z listy rozwijanej, tylko do celów testowych. Może się zdarzyć, że Xcode automatycznie wybiera inny profil niż ten, który chcesz.

Upewnij się również, że wykonałeś czystą kompilację, całkowicie usunąłeś aplikację z urządzenia itp. Ma to na celu upewnienie się, że nie masz w pobliżu starego puchu.

Mike Weller
źródło
Na nr 2 w moim poście, myślę, że jest ustawiony poprawnie, chociaż dodałem wyjaśniający zrzut ekranu do weryfikacji. Próbowałem też całkowicie usunąć aplikację i pozostawić ją wyłączoną na 2 dni zgodnie z zaleceniem, które gdzieś zauważyłem, że resetowanie niektórych informacji zajmuje dzień (tak, chwytam się słomek !?). Ale kiedy mówisz „Musisz się upewnić, że wybrano właściwy profil dla konfiguracji„ Debugowania ””, co dokładnie masz na myśli - gdzie mam to wybrać?
jwl
Jeśli klikniesz część „iPhone Developer” lub cokolwiek jest ustawione jako bieżąca wartość, zobaczysz listę rozwijaną wszystkich profili aprowizacji, o których wie Xcode. Upewnij się, że wybrano właściwy lub że element „Automatyczny programista” wybiera właściwy. Lista rozwijana powinna pokazać wszystko.
Mike Weller
Czy na pewno masz najnowszy profil obsługi administracyjnej? Czy to możliwe, że masz starą wersję, sprzed włączenia funkcji push?
Mike Weller
2
Cóż, tak myślę, że tak. Aby uzyskać nowy profil aprowizacji, w Xcode Organizer usunąłem profil zarówno z biblioteki, jak iz urządzenia, a następnie ponownie na ekranie biblioteki kliknąłem przycisk Odśwież. To spowodowało wycofanie go z portalu obsługi administracyjnej. Następnie dodałem to do urządzenia. Jak pokazano powyżej, zawartość XML ish pliku mobileprovision pokazuje prawidłowe uprawnienia
jwl
3
Ach, przepraszam. Tam musi być -przed ścieżką: codesign -d --entitlements - /path/to/my.app. Warto również w tym miejscu dokładnie sprawdzić, czy jesteś w katalogu Debug-iphoneos, ponieważ „Pokaż w Finderze” może czasami przenieść Cię w niewłaściwe miejsce.
Mike Weller
64

Napotkałem ten problem w Xcode 8. Musisz włączyć Target—> możliwości—> powiadomienia push. Sprawdź zrzut ekranu.

wprowadź opis obrazu tutaj

DipakSonara
źródło
1
To mi pomóż !!!! Wystarczy kliknąć przycisk ... rozwiązuję mój problem, który debuguję godzinami ... Xcode8 też.
Veck Hsiao
3
OMG dziękuję! No dalej Apple, przekaż nam rozsądniejszy komunikat o błędzie!
Ferran Maylinch
Xcode 8 wyłączył powiadomienia push dla mojej aplikacji, więc to rozwiązanie zadziałało.
Kevin,
1
Dziękuję, musiałem wykonać pozostałe kroki konfiguracji 3 razy, zanim to znalazłem. Czuję się jak idiota, ale także, że narzędzia są złe, pozwalając, by to był problem.
Collin Flynn
uratowałeś mi dzień, stary!
oskarko
47

Najłatwiej jest to zrobić na swoich kontach z Xcode:

Przejdź przez Xcode -> Preferencje -> Wybierz kartę Konta -> Wyświetl szczegóły -> Naciśnij przycisk odświeżania w lewym dolnym rogu -> Gotowe.

Zbuduj ponownie i powinno działać.

ooxio
źródło
19

Ok, już wcześniej miałem problem. Ponieważ powiadomienia push wymagają implementacji po stronie serwera, dla mnie odtworzenie profilu nie było opcją. Więc znalazłem to rozwiązanie BEZ tworzenia nowego profilu aprowizacji.

Xcode nie wybiera prawidłowo prawidłowego profilu obsługi administracyjnej, chociaż wybieramy go poprawnie.

Najpierw udaj się do organizatora. Na karcie Urządzenia z listy Profil aprowizacji z listy Biblioteka wybierz profil, którego próbujemy użyć. Kliknij go prawym przyciskiem myszy, a następnie „Pokaż profil w Finderze”.

wprowadź opis obrazu tutaj

W otwartym oknie Findera zostanie wybrany właściwy profil. Zanotuj nazwę.

wprowadź opis obrazu tutaj

Teraz przejdź do Xcode> Log Navigator. Wybierz filtr dla „Wszystkie” i „Wszystkie wiadomości”. Teraz w ostatniej fazie (Build Target) poszukaj kroku o nazwie „ProcessProductPackaging”, rozwiń go. Zanotuj nazwę profilu informacyjnego. NIE powinny pasować, jeśli występuje błąd. wprowadź opis obrazu tutaj

Teraz w oknie Opened Finder usuń fałszywy profil udostępniania, którego używa Xcode. Teraz buduj ponownie. Błąd powinien zostać rozwiązany. Jeśli nie, powtórz proces, aby znaleźć inny fałszywy profil i go usunąć.

Mam nadzieję że to pomoże.

Maks
źródło
To była moja wina, ale naprawiłem to za pomocą tej metody. Przypadkowo umieściłem w polu informacyjnym inny identyfikator niż ten, z którego wygenerowałem certyfikat.
JavaCoderEx
18

Odpowiedź brzmiała: zacznij od nowa, zrób wszystko tak samo, ale utwórz nowy profil informacyjny i zainstaluj go. To się udało. Sprawdzenie wszystkich szczegółów (uprawnień w usłudze mobilnej) wygląda dokładnie tak samo, jak wszystko w moim pytaniu tutaj. Ale teraz to działa. Apple: WAT?

Oczywiście byłoby to oczywiste, gdyby można było usunąć profile obsługi administracyjnej. Ale ponieważ nie jest to możliwe, nie chciałem zaśmiecać naszego zespołu kilkoma profilami testowymi. Mimo to w końcu straciłem cierpliwość i mimo wszystko spróbowałem, a ostatecznie zadziałało. Whatevs.

jwl
źródło
Utworzenie nowego profilu i "zabrudzenie" starego, tak jak jest to powiedziane w tym drugim pytaniu SO, zadziałało dla mnie: stackoverflow.com/questions/5681172/ ...
scurioni
Wszystko, co musiałem zrobić, to usunąć istniejący profil informacyjny z portalu i odtworzyć go. Możesz usunąć profile teraz po aktualizacji, więc nie ma potrzeby tworzenia nowego identyfikatora aplikacji.
odyth
Nowy profil aprowizacji z tym samym identyfikatorem aplikacji i certyfikatem dystrybucji rozwiązał ten problem. +1 :)
Azik Abdullah
18

Usuń stary profil informacyjny z XCode w Organizatorze.

Następnie wygeneruj nowy profil aprowizacji dla tego samego identyfikatora pakietu w portalu obsługi administracyjnej systemu iOS (po włączeniu wypychania).

Zaimportuj nowy profil aprowizacji w XCode, ustaw go w ustawieniach kompilacji aplikacji.

Buduj, uruchamiaj, to działa.

Właśnie to zrobiłem.

Od błędu do sukcesu zajęło mi 10 minut.

user1006117
źródło
To też pracował dla mnie. Edytowanie starego profilu informacyjnego i pobieranie nie pomogło. Dzięki!
prageeth
Jako pomocny dodatek, zamiast uzyskać nowy profil aprowizacji, mogłem po prostu usunąć stary
ritmatter
1
Zdecydowanie odradzałbym robienie tego ręcznie. Użyj github.com/fastlane/PEM .
fatuhoku
16

XCode 6.1.1 i wiele kont programistów Apple

Kolejna odpowiedź na tę już dość obszerną mieszankę: dzisiaj ponownie natknąłem się na ten problem i tym razem było to spowodowane tym, że miałem wiele kont Apple. Najpierw musiałem dodać drugie konto programisty w XCode> Preferencje> Konta> +

Upewnij się, że funkcja powiadomień push jest WŁĄCZONA

Następnie musiałem faktycznie wyraźnie włączyć zakup w aplikacji w aplikacji (wcześniej nie musiałem tego robić). XCode> (okno aplikacji)> Cele> Możliwości> Zakup w aplikacji WŁĄCZONY (na tym etapie dano mi możliwość wyboru właściwego certyfikatu)

Zauważ, że już dodałem certyfikat z włączoną opcją Push, klikając go dwukrotnie w Finderze.

wprowadź opis obrazu tutaj

kris
źródło
Szarpałem się z tym, myślę, że kiedy przełączyłem się na Xcode 8 beta, wyłączyłem przełącznik powiadomień push czy coś. Dzięki
inVINCEable
Dzięki, dlatego miałem ten problem. Mój identyfikator aplikacji umożliwia zakup w aplikacji, centrum gier itp., Ale w Xcode / funkcje wszystkie są wcześniej wyłączone, nie ma problemu. Od czasu aktualizacji do Xcode 8 mam ten problem. Po włączeniu IAP i Game Center w Xcode problem zniknął!
Ethan Long,
11

(Xcode 5) Cóż, po spędzeniu godziny rozwiązałem swój problem. Nawet jeśli ponownie wygenerujesz plik obsługi administracyjnej w Xcode 5, powinieneś ręcznie zaktualizować swoje konto. Zmieniłem tylko plik obsługi administracyjnej na karcie Organizator, który nie działał, Xcode nadal kompilował ze starym plikiem informacyjnym.

Więc idź do

Xcode> Preferencje> Konta> Wyświetl szczegóły (wybierz swoje konto)

Następnie odśwież pliki udostępniania.

Ömer Faruk Almalı
źródło
7

Mój problem polegał po prostu na tym, że podpisywałem się za pomocą profilu aprowizacji z użyciem symboli wieloznacznych zarządzanego przez Xcode.

Po utworzeniu profilu aplikacji (i pobraniu go, dwukrotnym kliknięciu i upewnieniu się, że moje ustawienia kompilacji odnoszą się do niego), pomyślnie otrzymałem token urządzenia APNS.

Graham Perks
źródło
Ja też miałem ten problem. Xcode 5 całkiem dobrze aktualizuje wszelkie profile aprowizacji. Dodałem usługę APNS później w fazie rozwoju. Musisz upewnić się, że powyższy plakat wskazuje, że Twój profil aprowizacji jest w rzeczywistości profilem unikalnym dla aplikacji, nad którą pracujesz, a nie profilem wieloznacznym.
Michael,
@Michael, jak możesz się tego upewnić? Próbowałem to zmienić w moich ustawieniach kompilacji (w obszarze Podpisywanie kodu), które obecnie jest ustawione na brak. Kiedy wybieram właściwy profil i kompiluję, pojawia się błąd, a następnie wraca do profilu aprowizacji z symbolami wieloznacznymi.
Ian Jamieson
@ian jaki błąd otrzymujesz? Czy na pewno jest to prawidłowy profil?
Michael
Ach, rozwiązałem to, musiałem ponownie pobrać poprawny certyfikat na mojego Maca. Wydaje się, że to załatwiło sprawę. Dzięki.
Ian Jamieson
Miło to słyszeć. To, co zwykle robię, gdy wydaje się, że ustawienia są prawidłowe. Ponów wszystkie certyfikaty. Wydaje się, że problem występuje częściej niż nie.
Michael
6

Miałem ten sam problem, co wszyscy inni i próbowałem wszystkich powyższych sztuczek, nic nie działało. Usunąłem nawet i zacząłem od nowa z innym kontem programisty.

W końcu zadziałało dla mnie

  1. Postępuj zgodnie z powyższą sugestią i utwórz identyfikator aplikacji
  2. Następnie utwórz profil informacyjny
  3. NIE używaj profilu wieloznacznego zespołu (zarządzanego przez xcode 1) w sekcji rozwoju obsługi administracyjnej. Musisz utworzyć osobny, używając tego identyfikatora aplikacji, dla którego aktywowałeś powiadomienia push. W ten sposób po opracowaniu będzie mieć wbudowaną funkcję powiadomień push.

Nie wiem, czy możesz włączyć to dla aplikacji wieloznacznej, ale po wypróbowaniu co najmniej 12 różnych sugestii i utracie kilku dni mam nadzieję, że to komuś pomoże

Michael Ellams
źródło
2
Ale to nic nie dodaje do istniejących odpowiedzi, które już dają tę radę. Oczywiście aplikacja push wymaga własnego profilu; Dokumentacja jest całkiem jasna, że ​​profil wieloznaczny nie może być używany dla żadnej aplikacji, która wymaga specjalnych uprawnień.
mat.
1
Zrobiłem to, ale moja aplikacja zawsze wybierze tylko profil udostępniania z symbolem wieloznacznym, nie mogę zmusić go do wybrania tego z włączonymi powiadomieniami push.
Ian Jamieson
3

Wspominasz o profilu informacyjnym, ale nie widzę żadnej wzmianki o profilu Apple Push.

Aby użyć Push, musisz mieć profil wypychania (są dwa, jeden do programowania i jeden do wydania). Po utworzeniu musisz upewnić się, że zawiera odpowiednie certyfikaty (zobacz sekcję EDYCJA poniżej).

To doskonały samouczek, który przeprowadzi Cię przez wszystkie kroki:

http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12

Napisanie dokładnej, szczegółowej odpowiedzi, takiej jak ten samouczek, zajęłoby mi lub komukolwiek innemu, więc nie zamierzam próbować, ani rościć sobie prawa do nagrody, skoro ten samouczek już istnieje.

PS Uważam, że nie potrzebujesz już uprawnień, to jest dziedzictwo.

EDYCJA: Powinieneś także sprawdzić, czy posiadasz niezbędne profile na urządzeniu - przejdź do ustawień, następnie ogólne, profile, sprawdź, czy są wymienione profile, zwłaszcza profil push. Możesz to również sprawdzić w sekcji Organizator w XCode. W Organizatorze są dwie sekcje, które mówią Profile aprowizacji - jedna w lewym górnym rogu Biblioteki (są to profile w XCode, których używasz do podpisywania itp.) Zobaczysz również sekcję wywołującą Profile obsługi administracyjnej dla podłączonego urządzenia, to to profil zainstalowany na słuchawce. Jeśli nie masz ich zainstalowanych w telefonie, możesz je pobrać ze strony internetowej portalu obsługi administracyjnej, a następnie kliknij przycisk Dodaj u dołu okna Organizatora.

Będąc w portalu obsługi administracyjnej, powinieneś także sprawdzić, czy profil Apple Push zawiera certyfikaty: - kliknij Provisioning w menu po lewej stronie - zobaczysz listę swojego profilu, wybierz EDYTUJ profil Apple push - zobaczysz sekcja certyfikatów, z listą programistów lub testerów itp., które masz w swoim projekcie, upewnij się, że pole wyboru jest dla nich zaznaczone. - zobaczysz również sekcję urządzeń, upewnij się, że urządzenie, na którym testujesz, zostało dodane.

Jeśli masz jakieś stare profile w XCode lub na urządzeniu, usuń je i pobierz / odśwież / zainstaluj wszystkie nowe profile z portalu obsługi administracyjnej

Gruntcakes
źródło
Jeśli uprawnienia są starsze, to dlaczego otrzymuję komunikat informujący o braku uprawnień? Skorzystałem już z linku do samouczka do listu bez powodzenia ... dzięki.
jwl
Dodałem również informacje o aktualnym pliku mobileprovision, które mogą być przydatne.
jwl
to prawda, nawet nie konfiguruję żadnych .entitlements, aby pomyślnie wysyłać powiadomienia. Jedną rzeczą, która mnie zaskoczyła, kiedy to robiłem, było to, że muszę ręcznie pobrać mobileprovision, a następnie przejść do ustawień kompilacji i zmienić tożsamość podpisu, aby pasowała do tej, która właśnie została pobrana, w moim przypadku najwyraźniej Xcode wybiera usługę mobilną z dziką kartą.
X Slash
Ja również dostałem komunikat o błędzie dotyczący uprawnień jakiś czas temu, to jest czerwony śledź, zobacz odpowiedź Mike'a Wellersa, tak właśnie zrobiłem w moim przypadku.
Gruntcakes
Zaktualizowałem odpowiedź, dodając więcej rzeczy do sprawdzenia.
Gruntcakes
2

Sam napotkałem ten sam problem. W moim przypadku problem polegał na tym, że nazwa mojego produktu ($ TARGET_NAME) nie została zapisana wielkimi literami w taki sam sposób, jak w certyfikacie dostarczonym przez Apple. Na przykład mam com.companyid.APNDemo, podczas gdy certyfikat Apple używa com.companyid.apndemo.

Zmieniłem cel na małe litery i zadziałało. Uwaga: wskazówką dla mnie było ustawienie kodowania w ustawieniach kompilacji na mój domyślny certyfikat programisty; nie profil aprowizacji APNTest.

David Carrico
źródło
1

Wiele z powyższych odpowiedzi jest poprawnych. Wydaje się jednak, że podczas radzenia sobie z tym istnieje więcej niż jeden możliwy błąd.

Ten, który miałem, to problem z wielkimi literami w moim identyfikatorze aplikacji. Mój identyfikator aplikacji z jakiegoś powodu nie był pisany wielką literą, ale moja aplikacja była. Po odtworzeniu identyfikatora aplikacji z poprawną wielkością liter wszystko działało płynnie. Mam nadzieję że to pomoże. Jednak frustrujące jak diabli.

PS, jeśli nadal nie działa, spróbuj ręcznie edytować pole tożsamości podpisywania kodu za pomocą opcji „edytuj”. Zmień drugi wiersz, wpisując nazwę poprawnej nazwy profilu informacyjnego.

matrinox
źródło
1

Rozwiązanie go zajęło mi godziny. Biorąc pod uwagę, że ktoś używa niestandardowych skryptów do podpisywania i pakowania, podczas gdy inni używają samego xcode, istnieje tylko jeden sposób, aby sprawdzić, co zakończyło się w Twojej aplikacji. Zrzuć uprawnienia z

codesign --display --entitlements :- path/to/MyApp.app

i sprawdź aps-environmenti application-identifier.

dwery
źródło
miałem ten sam problem. Chciałem tylko zapytać, czy ścieżka do aplikacji jest przeznaczona dla aplikacji zainstalowanej na symulatorze?
Ajeet,
nie, jest to ścieżka do skompilowanej aplikacji dla rzeczywistego urządzenia w katalogu kompilacji xcode.
dwery
1

Ten błąd może wystąpić, gdy wygasła ważność certyfikatu.

Rozwiązaniem jest odnowienie certyfikatu i podpisanie nim aplikacji.

Vahotm
źródło
1

Musisz się upewnić, że w swoich profilach obsługi administracyjnej ( https://developer.apple.com/account/ios/profile/ ) masz profil dystrybucji iOS.

Podczas przesyłania z xCode do App Store upewnij się, że w uprawnieniach masz środowisko aps. Jeśli nie, pobierz je z Wyświetl konta -> Wyświetl szczegóły -> Pobierz wszystko.

Nadav B
źródło
1

Miałem podobny problem. Skakałem między XCode 7 i 8 z różnych powodów. Kiedy użyjesz 8 do budowania, będziesz musiał użyć 8. Po prostu użyłem Xcode 8 i zastosowałem niektóre z sugerowanych powyżej zmian i zadziałało.

Brent Brookler
źródło
1

odtworzenie tymczasowych plików rozwiązało wszystkie moje problemy.

Faris Muhammed
źródło
0

Wydaje się, że jest coś dziwacznego z uprawnieniami „automatycznymi” w Xcode 4.6.

Istnieje plik Entitlement.plist dla każdego zestawu SDK pod adresem:

/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/Entitlements.plist

Rozwiązaniem, które wymyśliłem, była edycja tego pliku i ręczne dodanie podstępnego klucza środowiska aps:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>application-identifier</key>
    <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    <key>aps-environment</key>
    <string>development</string>
    <key>keychain-access-groups</key>
    <array>
        <string>$(AppIdentifierPrefix)$(CFBundleIdentifier)</string>
    </array>
</dict>
</plist>

Następnie Xcode generuje poprawny plik Xcent, który zawiera klucz środowiska aps pod adresem:

/Users/mySelf/Library/Developer/Xcode/DerivedData/myApp-buauvgusocvjyjcwdtpewdzycfmc/Build/Intermediates/myApp.build/Debug-iphoneos/myApp.build/myApp.xcent

Możesz zlokalizować miejsce, w którym tworzony jest plik Xcent, używając nawigatora dziennika Xcode,
poszukaj „ProcessProductPackaging”.

Niestety jest to jedyny sposób, jaki znalazłem, który rozwiązuje problem .
(i wreszcie w stanie poprawnie uzyskać teraz token push)

Zastanawiam się tylko, czy jest dostępne inne, bardziej eleganckie rozwiązanie.
Proszę zapoznać się z moim pytaniem dotyczącym SO, aby uzyskać więcej informacji na ten temat:
Automatyczne uprawnienia Xcode 4.6 nie działają - „brak prawidłowego środowiska aps”

AmitP
źródło
0

Przed usunięciem i ponownym utworzeniem identyfikatorów AppID / profili upewnij się, że w bibliotece i urządzeniu są zainstalowane te same (i prawidłowe) profile.

Zacząłem widzieć ten błąd po migracji na nowy komputer. Push działał poprawnie przed migracją.

Problem polegał na tym, że (duh) nie zaimportowałem profili do biblioteki Xcode na nowym komputerze (w Organizatorze / Urządzenia w Bibliotece-> Profile aprowizacji).

Mylące było to, że URZĄDZENIE miało już odpowiednie profile i pojawiły się zgodnie z oczekiwaniami w ustawieniach kompilacji, więc wszystko wyglądało tam poprawnie, ale XCode LIBRARY ich nie miało, więc podpisywał aplikację z ... ?? ?

Rodin Lyasoff
źródło
0

To właśnie naprawiło to dla mnie. (Próbowałem już włączać / wyłączać te funkcje, odtwarzać profil informacyjny itp.).

Na karcie Ustawienia kompilacji w polu Uprawnienia do podpisywania kodu mój plik .entitlements nie był odsyłaczem do wszystkich sekcji. Po dodaniu go do sekcji Any SDK błąd został rozwiązany.

wprowadź opis obrazu tutaj

mogile_oli
źródło
0

Wypróbowałem wszystkie wymienione tutaj odpowiedzi, ale nikt nie rozwiązał mojego problemu. W moim przypadku ten błąd jest spowodowany moim głupim błędem w tworzeniu Appid. Użyłem Wildcard App ID zamiast używania Explicit App ID spowodowało problem

Jeśli chcesz, aby aplikacja otrzymywała zdalne powiadomienia (powiadomienia wypychane), musisz użyć jawnego identyfikatora aplikacji , takiego jak com.tutsplus.push , zamiast com.tutsplus. *

Znajdź ScreenShot, wprowadź opis obrazu tutaj

arunjos007
źródło