prosource

Xcode 4.3에서 "응용 프로그램에 유효한 'aps-environment' 자격 문자열을 찾을 수 없음"을 수정하는 방법은 무엇입니까?

probook 2023. 6. 7. 23:00
반응형

Xcode 4.3에서 "응용 프로그램에 유효한 'aps-environment' 자격 문자열을 찾을 수 없음"을 수정하는 방법은 무엇입니까?

저는 푸시 알림을 받을 수 있는 간단한 iOS 앱을 만들기 위해 매우 열심히 노력해 왔습니다.제가 이렇게 하는 유일한 이유는 다른 팀원들이 사용할 수 있는 절차를 설정하기 위해서입니다. 그러나 웹의 다른 곳에서는 이러한 지침의 최신 작동 버전을 찾을 수 없었습니다.저희 가게는 iOS 개발에 상당히 생소한 가게이며, 저는 개인적으로 iOS 개발과 Xcode에 대해 전혀 경험이 없습니다.Apple과 다른 곳에서 온 수십 개의 튜토리얼, 기사 및 문제 게시물을 비틀거리며 살펴봤는데 거의 다 온 것 같습니다.

다음은 Xcode 4.3을 사용하고 있으며 처음에는 iOS 5.1에만 배포하려고 합니다. Xcode의 이전 버전과 비교하여 최근에 일부 사항이 변경되었을 수도 있지만, 다시 한 번 이 모든 것에 익숙치 않습니다. 그리고 완전히 혼란스럽고 복잡하다는 것을 알게 되었습니다.

iPhone에 Push가 활성화된 프로비저닝 프로필이 있습니다.

테스트 Xcode 프로젝트에서 해당 프로비저닝 프로파일을 서명 ID로 선택했습니다(빌드 설정 > 코드 서명).

여기에 이미지 설명 입력

Summary and Info > Custom iOS Target Properties에서 번들 식별자를 올바르게 설정했습니다* (제 생각에는??)

원격 알림 등록을 받았습니다.대리자의 didFinishLaunchingWithOptions에서 호출되는 유형

원격 알림 등록을 했습니다.장치 포함원격 알림에 대한 토큰 및 didTo등록 실패대리자에 오류가 있는 경우 장치 토큰 또는 오류를 각각 기록하도록 설정

Summary(요약) 아래에서 Enable Entitlements(권한 활성화)를 선택했습니다.

바로 아래에 선택한 Entitlements File이 Tinker6(내 테스트 프로젝트 이름)이며 Enable Entitlements를 선택하면 자동으로 생성됩니다.

Tinker6.entitlements 파일에서 다음과 같은 정보를 얻었습니다(웹 전체의 여러 게시물을 기준으로 수집한 내용은 정확하지만 Apple 자체에서 결정적인 내용은 찾을 수 없습니다).

여기에 이미지 설명 입력

업데이트됨

또한 사용 권한 파일 없이 전체 작업을 시도했지만 기본적으로 동일한 결과를 얻었습니다.

10) 모바일 프로비저닝 파일 내용에 사용 권한이 올바르게 포함되어 있습니다(숫자와 도메인을 스크램블했지만 구조는 동일합니다).

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

/end 업데이트

장치에서 이를 실행하려고 하면 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}

저는 get-task-allow를 NO로, aps-environment to production으로, 가능한 네 가지 조합 모두 동일하게 설정해 보았습니다.

어떻게 하면 이걸 극복할 수 있을까요?이에 대한 최종 문서는 어디에 있습니까?

추가적인 배경은 다음과 같습니다.

*번들 ID에 대해서는 Provisioning 프로파일의 App ID 및 Profile ID와 관련하여 이를 어떻게 설정해야 하는지 아직 잘 모르겠습니다.Provisioning 포털의 AppIds 아래에 다음과 같은 정보가 있습니다(숫자와 도메인을 스크램블했습니다).

여기에 이미지 설명 입력

그리고 두 장소 번들 ID가 설정되었습니다. 다음과 같습니다.

여기에 이미지 설명 입력 여기에 이미지 설명 입력

저는 이것들이 정확한지 아니면 둘 다 12355456A7.com 으로 설정해야 하는지 전혀 확신할 수 없습니다.뭐든 간에, 비록 제가 그 과정의 초기 단계에서 시도했지만, 성공하지 못했습니다.

참고 제목이 비슷한 게시물이 많다는 것을 알고 있지만, 파일 이름 등으로 볼 때 모두 오래된 것으로 보이며, 솔루션 중 어떤 것도 유용하지 않은 것으로 보입니다.저는 제가 제공한 더 큰 수준의 세부사항이 양질의 답변을 보장하기를 바랍니다.저는 아마 최대한 빨리 현상금을 배정할 것이고, 만약 당신이 해결책으로 이어지는 고품질의 답변을 주신다면, 저는 당신에게 현상금을 수여할 뿐만 아니라 당신의 답변을 트위터와 제 블로그를 통해 홍보할 것입니다.특히 블로그 등에 "프로비저닝 및 기타 항목을 포함하여 간단한 푸시 알림 앱을 작동하는 데 필요한 500단계가 정확하게 있습니다."라는 기사를 크로스 포스트하는 경우에는 더욱 그렇습니다.

를 하기 전에 app ID푸시를 위해 프로비저닝 프로파일을 다시 생성해 보십시오.

iOS Provisioning Portal -> Provisioning -> 귀하의 인증서 -> EDIT -> 편집 -> 새 프로비저닝 다운로드

나를 위해 일했습니다.이제 푸시를 사용할 수 있습니다.

먼저 프로비저닝 프로파일에 없는 사용자 지정 키/값 쌍을 추가하지 않는 한 사용 권한 파일이 필요하지 않습니다.앱이 구축되면 프로비저닝 프로필의 모든 사용 권한이 앱에 복사됩니다.

누락된 사용 권한에 대한 오류 메시지가 여전히 표시되므로 빌드 설정에서 코드 서명 옵션이 올바르지 않다고 가정할 수 있습니다.

"디버그" 구성에 대해 올바른 프로필이 선택되었는지 확인하고 안전하려면 "디버그" 및 "AnyiOS SDK" 레이블이 지정된 하위 노드에 대해 올바른 프로필을 선택했는지 확인해야 합니다.

여기에 이미지 설명 입력

이 스크린샷에는 선택한 "자동 개발자" 프로필이 표시되지만, 테스트 목적으로만 드롭다운에서 원하는 정확한 프로비저닝 프로필을 선택하십시오.Xcode가 자동으로 원하는 프로파일이 아닌 다른 프로파일을 선택하는 것일 수 있습니다.

또한 클린 빌드를 수행하고, 단말기에서 앱을 완전히 삭제하는 등의 작업을 수행해야 합니다.이것은 단지 여러분이 오래된 솜털을 가지고 있지 않은지 확인하기 위한 것입니다.

저는 Xcode 8에서 이 문제에 직면했습니다.대상 --> 기능 --> 푸시 알림을 활성화해야 합니다.스크린샷을 확인합니다.

여기에 이미지 설명 입력

가장 쉬운 방법은 Xcode를 사용하는 계정에서 이 작업을 수행하는 것입니다.

Xcode -> 기본 설정 -> 계정 선택 탭 -> 세부 정보 보기 -> 왼쪽 아래 새로 고침 버튼 누르기 -> 완료

다시 빌드하면 작동합니다.

네, 전에도 그 문제에 직면했습니다.푸시 알림은 서버 측 구현이 필요하기 때문에 프로파일을 다시 만드는 것은 선택사항이 아니었습니다.따라서 새로운 프로비저닝 프로파일을 생성하지 않고도 이 솔루션을 찾았습니다.

Xcode가 올바른 프로비저닝 프로파일을 올바르게 선택하고 있지만 제대로 선택하지 못하고 있습니다.

먼저 주최자로 이동합니다.장치 탭의 라이브러리에서 프로비저닝 프로파일 목록에서 사용하려는 프로파일을 선택합니다.마우스 오른쪽 단추를 누른 후 "파인더에서 프로필 표시"를 누릅니다.

여기에 이미지 설명 입력

열린 Finder 창에서 올바른 프로필이 선택됩니다.이름을 메모합니다.

여기에 이미지 설명 입력

Xcode > Log Navigator 입니다."모든" 및 "모든 메시지" 필터를 선택합니다.이제 마지막 단계(Build Target)에서 "Process Product Packaging(프로세스 제품 패키징)" 단계를 찾아 확장합니다.프로비저닝 프로파일 이름을 기록합니다.오류가 있는 경우 일치하지 않아야 합니다. 여기에 이미지 설명 입력

이제 Open Finder 창에서 Xcode가 사용 중인 악성 프로비저닝 프로파일을 삭제합니다.이제 다시 빌드합니다.오류가 해결되어야 합니다.프로세스를 반복하지 않으면 제거할 다른 악성 프로필을 찾습니다.

이게 도움이 되길 바랍니다.

이에 대한 답변은 처음부터 다시 시작하고 모든 작업을 동일하게 수행하되 새 프로비저닝 프로파일을 생성한 후 설치하는 것이었습니다.효과가 있었습니다.모든 세부 정보(모바일 프로비저닝의 사용 권한)를 검사하는 것은 여기서 제 질문의 모든 것과 완전히 동일하게 보입니다.하지만 이제는 효과가 있습니다.애플: WAT?

물론 프로비저닝 프로필을 삭제할 수 있었다면 이 작업을 수행할 수 있었을 것입니다.하지만 그것은 불가능하기 때문에, 저는 많은 테스트 프로필로 우리 팀을 혼란스럽게 하고 싶지 않았습니다.그래도 결국 인내심을 잃고 시도해 보았지만 결국 효과가 있었습니다.뭐 대 뭐.

Organizer의 XCode에서 이전 프로비저닝 프로파일을 삭제합니다.

그런 다음 푸시를 사용하도록 설정한 후 iOS 프로비저닝 포털에서 동일한 번들 ID에 대한 새 프로비저닝 프로파일을 생성합니다.

XCode에서 새 프로비저닝 프로파일을 가져와 앱 빌드 설정에서 설정합니다.

구축하고, 실행하고, 작동합니다.

난 그냥 했다.

실수에서 성공까지 10분이 걸렸습니다.

XCode 6.1.1 및 여러 Apple 개발자 계정

이미 상당히 포괄적인 이 혼합물에 대한 또 다른 대답은: 저는 오늘 이 문제를 다시 접했는데, 이번에는 제가 여러 개의 사과 계정을 가지고 있었기 때문입니다.먼저 XCode > Preferences > Accounts > +에서 두 번째 개발자 계정을 추가해야 했습니다.

푸시 알림 기능이 켜져 있는지 확인합니다.

다음으로 앱에서 실제로 In-App 구매를 명시적으로 활성화해야 했습니다(이전에는 이 작업을 수행할 필요가 없었습니다).XCode > (앱창) > Targets > Capabilities > In-App Purchase ON (이 단계에서 올바른 인증서를 선택할 수 있는 옵션이 주어짐)

이미 Finder에서 Push Enabled 인증서를 두 번 클릭하여 추가했습니다.

여기에 이미지 설명 입력

(Xcode 5) 글쎄요, 한 시간을 보낸 후에 저는 제 문제를 해결했습니다.Xcode 5에서 프로비저닝 파일을 다시 생성하더라도 계정을 수동으로 업데이트해야 합니다.나는 Organizer 탭에서 프로비저닝 파일만 변경했지만 작동하지 않았고, Xcode는 이전 프로비저닝 파일로 빌드를 유지했습니다.

그러니깐

Xcode > 기본 설정 > 계정 > 상세보기 (계정선택)

그런 다음 프로비저닝 파일을 새로 고칩니다.

문제는 Xcode 관리 와일드카드 프로비저닝 프로필로 서명하는 것입니다.

앱별 프로필을 생성한 후(다운로드하고 두 번 클릭하여 빌드 설정이 참조되었는지 확인) APNS 장치 토큰을 성공적으로 받았습니다.

저는 다른 모든 사람들과 같은 문제를 가지고 있었고 위의 모든 속임수를 시도했지만 아무 것도 효과가 없었습니다.심지어 삭제하고 다른 개발자 계정으로 새로 시작했습니다.

결국 나에게 효과가 있었던 것은

  1. 위에서 제안한 대로 수행하고 APP ID를 만듭니다.
  2. 그런 다음 프로비저닝 프로파일 생성
  3. 프로비저닝의 개발 섹션에서 팀 와일드카드 프로필(xcode 1에서 관리)을 사용하지 마십시오.푸시 알림을 활성화한 앱 ID를 사용하여 별도의 앱을 만들어야 합니다.이렇게 하면 개발 시 푸시 알림 기능이 내장됩니다.

와일드카드 앱에 대해 그것을 활성화할 수 있을지는 모르겠지만, 적어도 12개의 다른 제안을 시도하고 며칠을 잃은 후에 나는 이것이 누군가에게 도움이 되기를 바랍니다.

프로비저닝 프로필을 언급했지만 Apple Push Profile에 대한 언급은 보이지 않습니다.

푸시를 사용하려면 푸시 프로파일이 있어야 합니다(개발용과 릴리스용으로 각각 하나씩).작성한 후에는 관련 인증서가 포함되어 있는지 확인해야 합니다(아래 편집 섹션 참조).

이 튜토리얼은 모든 단계를 안내하는 훌륭한 튜토리얼입니다.

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

저나 다른 사람들이 이 튜토리얼처럼 완벽하게 상세한 답변을 작성하는 데는 몇 시간이 걸릴 것이기 때문에, 이 튜토리얼이 이미 존재하는 경우에는 현상금에 대한 권리를 주장하거나 시도하지 않을 것입니다.

추신. 저는 당신이 더 이상 자격이 필요하지 않다고 생각합니다. 이것은 유산입니다.

편집: 장치에 필요한 프로필이 있는지도 확인해야 합니다. 설정으로 이동한 다음 일반 프로필로 이동하여 프로필, 특히 푸시 프로필이 나열되어 있는지 확인하십시오.XCode의 Organizer 섹션에서도 확인할 수 있습니다.Organizer에는 Provision Profiles라고 하는 두 섹션이 있습니다. 하나는 Library의 왼쪽 상단에 있습니다. 이 섹션은 서명할 때 사용하는 XCode의 프로필입니다.또한 연결된 장치에 대한 Provisioning Profiles(프로비저닝 프로파일) 섹션이 표시됩니다. 이것은 핸드셋에 설치된 프로파일입니다.핸드셋에 설치되어 있지 않은 경우 프로비저닝 포털 웹 사이트에서 다운로드할 수 있습니다. 그런 다음 Organizer 창의 하단에 있는 Add 버튼을 클릭합니다.

프로비저닝 포털에서 Apple Push Profile에 인증서가 포함되어 있는지 확인해야 합니다. - 왼쪽 메뉴의 Provisioning(프로비저닝)을 클릭하면 프로필 목록이 표시되고, Apple Push Profile을 편집하도록 선택하면 인증서 섹션과 개발자 또는 테스터 목록 등이 표시됩니다.프로젝트에 확인란이 선택되어 있는지 확인합니다. 장치 섹션도 표시되고 테스트 중인 장치가 추가되었는지 확인합니다.

XCode 또는 장치에 이전 프로파일이 있는 경우 해당 프로파일을 삭제하고 프로비저닝 포털에서 모든 새 프로파일을 다운로드/새로 고침/설치

저도 같은 문제에 부딪혔습니다.저에게 문제는 애플이 제공한 인증서에 표시된 것과 같은 방식으로 제 제품명($TARGET_NAME)이 대문자로 표시되지 않았다는 것입니다.예를 들어, 저는 com.companyid를 가지고 있었습니다.Apple 인증서가 com.companyid.appendemo를 사용하는 동안 APNDemo.

나는 내 목표를 소문자로 바꾸었고 그것은 작동했습니다.참고: 제 단서는 빌드 설정의 코드 서명 설정이 APNTest 프로비저닝 프로필이 아닌 기본 개발자 인증서로 설정되었다는 것입니다.

위의 답변 중 많은 부분이 정답입니다.그러나 이 문제를 처리할 때 한 가지 이상의 오류가 있을 수 있습니다.

제가 가지고 있던 것은 앱 ID의 대문자 표기 문제였습니다.제 앱 아이디는 왠지 대문자로 표시되지 않았지만, 제 앱은 대문자로 표시되었습니다.앱 ID를 정확한 대문자로 다시 생성하면 모든 것이 원활하게 작동합니다.이게 도움이 되길 바랍니다.정말 짜증나긴 하지만요.

추신: 그래도 작동하지 않으면 "edit"를 사용하여 Code Signing Identity 필드를 수동으로 편집해 보십시오.두 번째 줄을 올바른 프로비저닝 프로파일 이름으로 변경합니다.

그것을 푸는 데 몇 시간이 걸렸습니다.다른 사람들이 xcode 자체를 사용하는 동안 누군가가 서명하고 포장하기 위해 사용자 지정 스크립트를 사용한다는 점을 고려할 때, 앱에서 종료된 내용을 확인하는 방법은 하나뿐입니다.사용 권한 덤프

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

그고체크를 확인합니다.aps-environment그리고.application-identifier.

인증서가 만료되면 이 오류가 발생할 수 있습니다.

해결책은 인증서를 갱신하고 이 인증서로 응용프로그램에 서명하는 것입니다.

프로비저닝 프로파일(https://developer.apple.com/account/ios/profile/) 에 iOS 배포 프로파일이 있는지 확인해야 합니다.

xCode에서 App Store로 업로드할 때 사용 권한에 aps-환경이 있는지 확인합니다.그렇지 않은 경우 계정 보기 -> 세부 정보 보기 -> 모두 다운로드에서 다운로드합니다.

저도 비슷한 문제가 있었습니다.저는 여러 가지 이유로 XCode 7과 8 사이를 뛰어다녔습니다.일단 8을 사용하여 빌드하면 8을 사용해야 합니다.저는 Xcode 8만 사용하고 위에서 제안한 변경 사항 중 일부를 적용하여 작동했습니다.

임시 파일을 다시 생성하여 모든 문제를 해결했습니다.

Xcode 4.6의 '자동' 자격에 뭔가 특이한 점이 있는 것 같습니다.

다음 위치에 각 SDK에 대한 Entitlement.plist 파일이 있습니다.

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

해결 방법은 이 파일을 편집하고 다음과 같이 몰래 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>

그런 다음 Xcode는 다음 위치에 aps-environment 키가 포함된 올바른 Xcent 파일을 생성합니다.

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

Xcode의Navigator, Xcode의 Log Navigator를 수 .
"프로세스 프로덕트 패키징".

불행하게도, 이것이 제가 발견한 문제를 해결하는 유일한 방법입니다.
이제 토큰을 수

좀 더 우아한 해결책이 있는지 궁금합니다.
자세한 내용은 SO 질문을 참조하십시오.
4 자동 이 작동하지 - " aps-environment" Xcode 4.6 aps-environment Xcode 4.6 파일 이름 - " aps-environment "

앱 삭제 및 재생성 전ID/프로파일, 라이브러리 및 장치에 동일한(그리고 올바른) 프로파일이 설치되어 있는지 확인합니다.

새 컴퓨터로 마이그레이션한 후 이 오류가 표시되기 시작했습니다.마이그레이션하기 전에 푸시가 제대로 작동했습니다.

문제는 (Duh) 새 컴퓨터의 Xcode 라이브러리에 프로파일을 가져오지 않았다는 것입니다(라이브러리 -> 프로비저닝 프로파일 아래의 Organizer/Devices).

혼란스러운 부분은 DEVICE가 이미 올바른 프로파일을 가지고 있고 빌드 설정에서 예상대로 표시되었기 때문에 모든 것이 올바르게 표시되었지만 XCode Library에는 이러한 프로파일이 없었기 때문에...?와 함께 앱에 서명했다는 것입니다.

이 때문에 문제가 해결되었습니다. (이미 기능 켜기/끄기, 프로비저닝 프로필 다시 만들기 등을 시도했습니다.)

빌드 설정 탭의 코드 서명 권한에서 내 .entitlements 파일이 일부 섹션에 대해 링크되지 않았습니다.Any SDK 섹션에 추가하자 오류가 해결되었습니다.

여기에 이미지 설명 입력

저는 여기 나열된 모든 답을 시도했지만 아무도 제 문제를 해결하지 못했습니다.나의 경우 이 오류는 Appid 생성에 대한 나의 어리석은 실수 때문입니다.명시적 앱 ID를 사용하지 않고 와일드카드 앱 ID를 사용하여 문제가 발생했습니다.

응용 프로그램이 원격 알림(푸시 알림)을 수신하도록 하려면 com과 같은 명시적 앱 ID를 사용해야 합니다.톡스플러스com 대신 push.톡스플러스*

스크린샷을 찾으십시오.

키를 하나 추가하기만 하면 여기에 이미지 설명 입력됩니다.사용 권한 파일.

APS Environment 이 키는 추가되어야 하며 값은 목적에 따라 개발 또는 운영이어야 합니다.

업로드된 이미지를 확인하십시오.

언급URL : https://stackoverflow.com/questions/10987102/how-to-fix-no-valid-aps-environment-entitlement-string-found-for-application

반응형