Próbuję przesłać aplikację do sklepu z aplikacjami i pojawia się ten błąd na stronie z certyfikatami. O ile wiem, zmieniłem pole, więc są zgodne, ale czegoś mi brakuje.

Każda pomoc byłaby bardzo mile widziana.

Próbuję przesłać aplikację do sklepu z aplikacjami i pojawia się ten błąd na stronie z certyfikatami. O ile wiem, zmieniłem pole, więc są zgodne, ale czegoś mi brakuje.

Każda pomoc byłaby bardzo mile widziana.

Odpowiedzi:
Nie jestem pewien, dlaczego to naprawiło, ale wszedłem do karty Możliwości mojego celu, włączyłem iCloud, próbowałem wykonać kompilację archiwum, nie udało się, ponownie wyłączyłem iCloud, próbowałem wykonać kompilację archiwum i udało się, i po tym czasie był w stanie ponownie automatycznie rozwiązać certyfikaty.
Kliknij prawym przyciskiem myszy Finder -> Idź do folderu ...
~/Library/MobileDevice/Provisioning
Dla Xcode 11
~/Library/MobileDevice/Provisioning Profiles/
Usuń wszystkie profile obsługi administracyjnej, gotowe.
~/Library/MobileDevice/Provisioning Profiles/
Utworzona aplikacja ma niepoprawną application-identifierwartość, której oczekuje profil informacyjny. Certyfikat dla appID com.example.foo dla zespołu 2ABCDEFG będzie oczekiwał identyfikatora aplikacji: 2ABCDEFG.com.example.foo, Twoja aplikacja zadeklarowała, że jej appID to com.example.foo, ale identyfikator aplikacji nie pasuje , albo używasz niewłaściwego prefiksu zespołu, albo masz błędnie skonfigurowany identyfikator pakietu.
W moim przypadku używam schematów kompilacji, aby umożliwić mi zbudowanie aplikacji prod i aplikacji QA. com.example.foo w przypadku prod i com.example.foo.qa w przypadku kontroli jakości. Ustawiłem identyfikator bundleIdentifier w Info.plist na $ (PRODUCT_BUNDLE_IDENTIFIER) $ (BUNDLE_SUFFIX), który działa świetnie w symulatorze i na urządzeniu do posiadania różnych aplikacji, jednak gdy aplikacja generuje swój identyfikator aplikacji podczas fazy archiwizacji, nie może czytać bundleIdentifier wygenerowanego przez Info.plist.
Aby zaradzić tej sytuacji, zmodyfikowałem FooProject.xcodeproj / project.pbxproj (za pomocą edytora tekstu), aby zmienić ustawienia QA buildSettings PRODUCT_BUNDLE_IDENTIFIER na com.example.foo.qa
Możesz zapoznać się z technicznymi pytaniami i odpowiedziami firmy Apple, aby zobaczyć szczegółowe informacje na temat rozwiązania tego problemu. Po uruchomieniu uprawnień do kodu w wyeksportowanej aplikacji i sprawdzeniu, z jakim identyfikatorem aplikacji została właśnie zbudowana aplikacja, szybko zorientujesz się, co robisz źle. https://developer.apple.com/library/content/qa/qa1879/_index.html Nie znalazłem tej strony podczas wyszukiwania w Google, ponieważ w rzeczywistości nie używają oni frazy z komunikatu o błędzie ani nie wywołują aplikacji -identifier według pełnej nazwy, ale zamiast tego powiedz identyfikator aplikacji.
Ponadto rozwiązaniem tego problemu nie jest wygenerowanie nowego profilu aprowizacji, który ma uprawnienie do identyfikatora aplikacji, ale ma to uprawnienie, jednak wartość w profilu aprowizacji i aplikacja muszą być zgodne.
Może brakowało pliku {project} .entitlements. Wykonanie tego, o czym wspomniał @samkass, spowoduje automatyczne wygenerowanie pliku i zadziała. Więc po prostu przejdź do zakładki możliwości, włącz cokolwiek i wyłącz to.
Zmiana przełącznika iCloud na włączony, budowanie i wyłączanie iCloud pozwoliło pozbyć się błędu mówiącego, że:
Profil nie jest zgodny z wartościami pliku uprawnień dla uprawnień dla identyfikatora aplikacji i grup dostępu do pęku kluczy.
W Xcode 11 może się to zdarzyć, gdy w projekcie nie ma pliku .entitlement. Rozwiązaniem byłoby dodanie dowolnej losowej możliwości poprzez kliknięcie „+ Możliwości” pod „Podpisywanie i możliwości” (co prowadzi do utworzenia pliku .entitlement), a następnie usunięcie tej możliwości. Umożliwi to również automatyczne udostępnienie certyfikatu.
Sprawdź funkcje aplikacji, które są wymagane dla Twojej aplikacji, takie jak zakup aplikacji, powiadomienie push, dźwięk z aplikacji, zestaw Siri itp.
To jedyna przyczyna tego typu błędu.
Upewnij się, że w identyfikatorze aplikacji powyższe flagi powinny być włączone.
W większości przypadków dzieje się tak, gdy nie skonfigurowałeś powiadomień push, zakup w aplikacji w Twoim identyfikatorze aplikacji deweloperskiej.
Dla mnie był to trik
W moim przypadku problem był następujący: profil zaopatrzeniowy używany do kroku kompilacji został utworzony dla innego identyfikatora aplikacji niż profil zaopatrzeniowy używany do kroku eksportu.
Upewnij się więc, że używasz tego samego profilu aprowizacji do etapu kompilacji i eksportu.
Funkcje sprawdzania krzyżowego w aplikacji z opcjami włączonymi dla identyfikatora aplikacji na koncie programisty.
TL; DR: sprawdź swój identyfikator aplikacji i upewnij się, że usługi są zgodne z tym, co jest w celu.
Przydarzyło mi się to, że pozwoliłem Xcode 10.1 pomóc mi w utworzeniu identyfikatora aplikacji, a potem napotykam problem opisany tutaj. (Wybrałem identyfikator aplikacji whildcard podczas tworzenia aplikacji w iTunesConnect, więc nawet nie zdawałem sobie sprawy, że zostało to zrobione). Kiedy otworzyłem portal dla programistów iOS, nowy identyfikator aplikacji ma automatycznie włączone Game Center i In App Purchase.
Ponieważ nie mogłem włączyć Game Center w Twoim Target -> Capabilities, włączyłem zakup w aplikacji, a następnie moja aplikacja mogła zostać podpisana i przesłana.
Kiedy napotkaliśmy ten sam problem, próbowaliśmy wszystkich powyższych rzeczy, ale żadna z nich nie działała.
Udało nam się zmienić identyfikator pakietu tak, aby nie był identyczny z poprzednim, na przykład „com.name.App” na „com.name.App2”; niech xcode spróbuje pobrać / utworzyć profil informacyjny, a następnie zresetować go z powrotem do oryginalnego.
Pomysł wziąłem z tego wątku na forach programistów Apple - https://forums.developer.apple.com/thread/114539
Trafiłem na tę stronę niedawno po próbie utworzenia zduplikowanego celu - żadna z sugestii nie zadziałała. Dalsze dochodzenie i trochę wyrywania włosów ostatecznie doprowadziły mnie do przejrzenia ustawień kompilacji mojej aplikacji, aby spróbować dowiedzieć się, co jest nie tak.
Okazało się, że mój projekt nadal wskazywał na plik uprawnień ORYGINALNEGO celu, zamiast mieć własny. Aby rozwiązać ten problem, przeszedłem do oryginalnego pliku uprawnień w Finderze (np. $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ), utworzyłem kopię w tym samym folderze, a następnie zmieniłem jego nazwę (np. NewTargetName.entitlements).
Następnie otworzyłem nowy plik uprawnień i zmieniłem pole identyfikatora aplikacji, aby pasowało do końca identyfikatora pakietu mojego nowego celu (np. ABCDEFGH.US.co.fake-company.superduperapp-newtargetname ).
Na koniec zaktualizowałem pole „Uprawnienia do podpisywania kodu” w ustawieniach kompilacji na ścieżkę do mojego pliku uprawnień (dla mnie było to coś w rodzaju $ {SRCROOT} /MyProject/Entitlements/TargetName.entitlements ).
Wróciłem do zakładki Podpisywanie i możliwości i oto problem został rozwiązany. Mam nadzieję, że ktoś tam uzna to za przydatne.
Miałem ten problem z zupełnie nową aplikacją, w Xcode 12 beta 3 ( zgłoszenia aplikacji rozpoczęły się dzisiaj ).
Xcode miał włączoną opcję „Automatycznie zarządzaj podpisywaniem”. Jednak identyfikator zespołu wyświetlany w „Certyfikacie podpisywania” nie zgadzał się z identyfikatorem zespołu wyświetlanym w witrynie iTunes Connect. To była główna przyczyna uniemożliwiająca przesłanie aplikacji.
Jak to naprawiłem:
Napotkałem ten sam problem podczas konfigurowania potoku Gitlab, który uruchamia exportArchive cmd i przesyłanie do AppStore. Udało mi się go uruchomić, zmieniając DEVELOPMENT_TEAM w ustawieniach kompilacji na ten sam zespół wybrany w Podpisywanie i certyfikaty.
Ponieważ poprzednio był pusty, który domyślnie używał innego identyfikatora DEV TEAM, który był niepoprawny i nie pasował, i narzekał, że „identyfikator aplikacji” = 12331232.com.bannana.apples.peach nie pasuje. Co doprowadziło mnie do ustawienia właściwego DEV TEAM i zadziałało.
Xcode ver: wersja 11.3.1
Mam nadzieję, że to komuś pomoże.
Wiele celów:
... i użyj iCloud.
Włączanie i wyłączanie iCloud nie było dla nas opcją. Używamy go już w produkcji i raczej nie zadzieramy z nim ... W pewnym momencie dostałem wiadomość z oryginalnego pytania i tę odmianę:
Profil nie jest zgodny z wartościami pliku uprawnień dla uprawnień dla identyfikatora aplikacji i grup dostępu do pęku kluczy.
Wskazując na inne odpowiedzi tutaj, upewniliśmy się, że wszystkie cele będą miały .entitlementsplik. Gdyby cel nie miał żadnego, stworzyliśmy pusty, taki jak poniżej:
<?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/>
</plist>
... i wskazał, że to cel Code Signing Entitlementw Build Settingsdo pustego .entitlementspliku.
Rozwiązany!
Usuń wszystkie profile znajdujące się w ~/Library/MobileDevice/Provisioning Profiles/
entitlements.plistplik.