development

Xcode 4.3에서 "응용 프로그램에 유효한 'aps-environment'인 타이틀먼트 문자열이 없습니다"를 수정하는 방법은 무엇입니까?

big-blog 2020. 6. 9. 07:42
반응형

Xcode 4.3에서 "응용 프로그램에 유효한 'aps-environment'인 타이틀먼트 문자열이 없습니다"를 수정하는 방법은 무엇입니까?


푸시 알림을받을 수있는 간단한 간단한 iOS 앱을 만들기 위해 매우 열심히 노력했습니다. 이 작업을 수행하는 유일한 이유는 다른 팀 구성원이 사용할 절차를 설정하고 웹에서 다른 곳에서 최신 버전의 해당 지침을 찾을 수 없었기 때문입니다. 우리 가게는 iOS 개발자에게 상당히 새롭고 개인적으로 iOS 개발자와 Xcode를 완전히 경험하지 못했습니다. 나는 애플과 다른 곳에서 온 수십 개의 튜토리얼, 기사 및 문제 게시물을 우연히 발견했으며 거의 ​​거기에있을 것 같은 느낌이 들었습니다 ...

여기에 내가 가야 할 곳이 있습니다 (Xcode 4.3을 사용하고 처음에는 iOS 5.1에만 배포하려고 시도하고 있으며 최근에 이전 버전의 Xcode와 비교하여 일부 변경 사항이있을 수 있지만 다시 한 번 새로 모았습니다. 이것은-완전히 혼란스럽고 복잡한 것을 발견했습니다) :

1) 푸시가 활성화 된 iPhone의 프로비저닝 프로파일이 있습니다.

2) 내 테스트 Xcode 프로젝트에서 서명 ID로 선택된 프로비저닝 프로파일이 있습니다 (빌드 설정> 코드 서명).

여기에 이미지 설명을 입력하십시오

3) 요약 및 정보> 사용자 정의 iOS 대상 속성 아래에 번들 식별자가 있습니다. * (생각합니다 ??)

4) 대리인의 didFinishLaunchingWithOptions에서 registerForRemoteNotificationTypes가 호출되었습니다.

5) 대리인에 didRegisterForRemoteNotificationsWithDeviceToken 및 didFailToRegisterForRemoteNotificationsWithError가 있고 장치 토큰 또는 오류를 각각 기록하도록 설정되었습니다.

6) 요약에서 사용 권한 부여를 확인했습니다.

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

8) Tinker6.entitlements 파일에서 다음을 얻었습니다 (웹에서 여러 게시물을 기반으로 올바로 작성했지만 Apple 자체에서 명확한 것을 찾을 수는 없습니다).

여기에 이미지 설명을 입력하십시오

업데이트

9) 또한 자격 파일없이 모든 것을 시도했으며 본질적으로 동일한 결과를 얻었습니다.

10) 내 mobileprovision 파일 내용에 자격이 올바르게 포함되어 있습니다 (번호와 도메인을 스크램블했지만 구조는 동일합니다).

<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에 관한 한, 프로비저닝 프로파일의 앱 ID 및 프로파일 ID와 관련하여 어떻게 설정해야하는지 아직 확실하지 않습니다. App Ids의 Provisioning portal에서 나는 이것을 가지고 있습니다 (수와 도메인을 스크램블했습니다).

여기에 이미지 설명을 입력하십시오

그리고 두 곳의 번들 ID가 설정되어 있습니다.

여기에 이미지 설명을 입력하십시오 여기에 이미지 설명을 입력하십시오

나는 이것이 정확하거나 확실하지 않거나 하나 또는 둘 다 12355456A7.com.whatever.tinker로 설정 해야하는지 여부는 확실하지 않지만 프로세스 초기 단계에서 성공하지 못했습니다.

참고 비슷한 제목을 가진 게시물이 많이 있다는 것을 알고 있지만 파일 이름과 주어진 내용에 따라 모두 오래된 것으로 보이며 솔루션 중 어느 것도 유용한 것으로 보이지 않습니다. 내가 제공 한 세부 수준이 높으면 품질 응답이 보장되기를 바랍니다. 나는 가능한 한 빨리 현상금을 할당 할 것이며 해결책으로 이어지는 고품질의 답변을 제공하면 현상금을 수여 할뿐만 아니라 트위터와 내 블로그를 통해 답변을 홍보 할 것입니다. 특히 크로스 포스트 게시물을 게시하는 경우 블로그 나 다른 사이트에 프로비저닝 및 기타 항목을 포함하여 간단한 푸시 알림 앱을 사용해야 하는 정확한 500 단계가 있습니다.


app IDfor push 를 구성하기 전에 프로비저닝 프로파일을 작성한 경우 프로비저닝 프로파일 을 재생성하십시오.

iOS 프로비저닝 포털-> 프로비저닝-> 인증서-> 편집-> 편집-> 새 프로비저닝 다운로드

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


우선 프로비저닝 프로파일에 존재하지 않는 사용자 정의 키 / 값 쌍을 추가하지 않으면 권한 부여 파일이 필요하지 않습니다. 앱이 빌드되면 프로비저닝 프로파일의 모든 권한이 앱에 복사됩니다.

누락 된 권한에 대한 오류 메시지가 계속 표시되면 빌드 설정에서 코드 서명 옵션이 올바르지 않다고 가정 할 수 있습니다.

"Debug"구성에 올바른 프로파일이 선택되어 있고 "Debug"및 "Any iOS SDK"라는 하위 노드 모두에 대해 올바른 프로파일을 선택했는지 확인해야합니다.

여기에 이미지 설명을 입력하십시오

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

또한 깨끗하게 빌드하고 장치에서 앱을 완전히 삭제하는 등의 작업을 수행하십시오. 이는 오래된 보풀이 생기지 않도록하기위한 것입니다.


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

여기에 이미지 설명을 입력하십시오


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

Xcode-> 환경 설정-> 계정 탭 선택-> 세부 정보보기-> 왼쪽 하단의 히트 새로 고침 버튼-> 완료를 클릭하십시오.

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


좋아, 나는 전에 문제에 직면했다. 푸시 알림에는 서버 측 구현이 필요하므로 프로파일을 다시 작성하는 것은 옵션이 아닙니다. 그래서 새로운 프로비저닝 프로파일을 만들지 않고이 솔루션을 찾았습니다.

Xcode가 올바르게 선택했지만 올바른 프로비저닝 프로파일을 올바르게 선택하지 않았습니다.

먼저 주최자로 이동하십시오. 장치 탭의 라이브러리의 프로비저닝 프로파일 목록에서 사용하려는 프로파일을 선택하십시오. 마우스 오른쪽 버튼으로 클릭 한 다음 "파인더에서 프로파일 공개"를 클릭하십시오.

여기에 이미지 설명을 입력하십시오

열린 Finder 윈도우에서 올바른 프로파일이 선택됩니다. 이름을 적어 둡니다.

여기에 이미지 설명을 입력하십시오

이제 Xcode> Log Navigator로 이동하십시오. "모두"및 "모든 메시지"에 대한 필터를 선택하십시오. 이제 마지막 단계 (빌드 대상)에서 "ProcessProductPackaging"단계를 찾아 확장하십시오. 프로비저닝 프로파일 이름을 참고하십시오. 오류가 발생하면 일치하지 않아야합니다.여기에 이미지 설명을 입력하십시오

이제 열린 파인더 창에서 Xcode가 사용중인 악성 프로비저닝 프로파일을 삭제하십시오. 이제 다시 빌드하십시오. 오류를 해결해야합니다. 그렇지 않은 경우 프로세스를 반복하여 다른 불량 프로파일을 찾아 제거하십시오.

도움이 되었기를 바랍니다.


대답은 다음과 같습니다. 다시 시작하고 모든 것을 동일하게 수행하지만 새로운 프로비저닝 프로파일을 생성하여 설치하십시오. 효과가있었습니다. 모든 세부 사항 (모바일 프로비저닝의 자격 부여)을 검사하면 내 질문의 모든 내용과 정확히 동일하게 보입니다 . 그러나 지금은 작동합니다. 애플 : WAT?

물론 프로비저닝 프로파일을 삭제할 수 있다면 이 작업을 수행하는 것이 분명 했을 것입니다. 그러나 이것이 불가능하기 때문에 팀을 여러 테스트 프로필로 혼란스럽게 만들고 싶지 않았습니다. 그럼에도 불구하고 마침내 인내심을 잃고 어쨌든 시도해 보았습니다. Whatevs.


Organizer의 XCode에서 이전 프로비저닝 프로파일을 삭제하십시오.

그런 다음 푸시를 활성화 한 후 iOS 프로비저닝 포털에서 동일한 번들 ID에 대해 새로운 프로비저닝 프로파일을 생성하십시오.

XCode에서 새 프로비저닝 프로파일을 가져 와서 앱 빌드 설정에서 설정하십시오.

빌드, 실행, 작동합니다.

방금 했어요

오류에서 성공까지 10 분이 걸렸습니다.


XCode 6.1.1 및 여러 Apple 개발자 계정

이미 상당히 포괄적 인 혼합에 대한 또 다른 대답 : 오늘이 문제를 다시 발견했으며 이번에는 여러 개의 Apple 계정이 있었기 때문에 발생했습니다. XCode> 환경 설정> 계정> + 에서 두 번째 개발자 계정을 먼저 추가해야했습니다.

푸시 알림 기능이 켜져 있는지 확인

다음으로 실제로 앱에서 인앱 구매를 명시 적으로 활성화해야했습니다 (이전 에이 작업을 수행 할 필요는 없었습니다). XCode> (앱 창)> 대상> 기능> 인앱 구매 ON (이 단계에서 올바른 인증서를 선택할 수있는 옵션이 제공됨)

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

여기에 이미지 설명을 입력하십시오


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

그래서가

Xcode> 환경 설정> 계정> 세부 사항보기 (계정을 선택하십시오)

그런 다음 프로비저닝 파일을 새로 고치십시오.


내 문제는 단순히 Xcode 관리 와일드 카드 프로비저닝 프로파일로 서명하는 것이 었습니다.

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


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

결국 나를 위해 일한 것은

  1. 위에서 제안한대로하고 APP ID를 만드십시오
  2. 그런 다음 프로비저닝 프로파일을 작성하십시오.
  3. 프로비저닝의 개발 섹션에서 팀 와일드 카드 프로파일 (xcode one로 관리)을 사용하지 마십시오. 푸시 알림을 활성화 한 앱 ID를 사용하여 별도의 ID를 만들어야합니다. 이런 방식으로 개발할 때 푸시 알림 기능이 내장되어 있습니다.

와일드 카드 앱에서 사용할 수 있는지 모르겠지만 적어도 12 가지 제안을 시도하고 며칠을 잃은 후에 누군가에게 도움이되기를 바랍니다.


프로비저닝 프로파일에 대해서는 언급했지만 Apple Push Profile에 대해서는 언급하지 않았습니다.

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

이것은 모든 단계를 안내하는 훌륭한 자습서입니다.

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

이 튜토리얼과 같은 철저한 상세 답변을 작성하는 데는 몇 시간 또는 몇 시간이 걸리므로이 튜토리얼이 이미 존재하는 경우 현상금을 청구하거나 주장하지 않습니다.

추신 : 나는 더 이상 자격이 필요하지 않다고 생각합니다. 이것은 레거시입니다.

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

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

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


이 같은 문제에 직접 부딪쳤다. 나에게 문제는 내 제품 이름 ($ TARGET_NAME)이 apple에서 제공 한 인증서에 표시된 것과 같은 방식으로 대문자로 표기되지 않았다는 것입니다. 예를 들어, Apple cert는 com.companyid.apndemo를 사용하는 동안 com.companyid.APNDemo를 사용했습니다.

목표를 소문자로 변경했는데 효과가있었습니다. 참고 : 실마리는 빌드 설정의 공동 디자인 설정이 기본 개발자 인증서로 설정되었다는 것입니다. APNTest 프로비저닝 프로파일이 아닙니다.


위의 답변 중 많은 것이 맞습니다. 그러나이를 처리 할 때 가능한 오류가 두 개 이상인 것 같습니다.

내가 가진 것은 내 앱 ID의 대문자 문제였습니다. 어떤 이유로 내 앱 ID가 대문자로 표시되지 않았지만 내 앱은 사용되었습니다. 올바른 대문자를 사용하여 앱 ID를 다시 만들면 모두 원활하게 작동했습니다. 도움이 되었기를 바랍니다. 그래도 지옥처럼 좌절합니다.

PS 그래도 작동하지 않으면 "edit"를 사용하여 Code Signing Identity Field를 수동으로 편집하십시오. 올바른 프로비저닝 프로파일 이름으로 두 번째 행을 변경하십시오.


그것을 해결하는 데 몇 시간이 걸렸습니다. 누군가가 사용자 정의 스크립트를 사용하여 서명하고 압축하는 동안 다른 사람들은 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-environment 키를 다음과 같이 수동으로 추가하는 것입니다.

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

You can locate where your Xcent file is created using Xcode's Log Navigator,
look for "ProcessProductPackaging".

Unfortunately, this is the only way I found that fixes the issue.
(and finally able to properly get push token now)

Just wondering if another more elegant solution is available.
Please see my SO question for more details on that:
Xcode 4.6 automatic entitlement not working - "no valid aps-environment"


Before deleting and regenerating AppIDs/Profiles, make sure your Library and Device have the same (and correct) profiles installed.

I started seeing this error after migrating to a new computer. Push had been working correctly prior to the migration.

The problem was (duh) that I hadn't imported the profiles to the Xcode library on the new machine (in Organizer/Devices under Library->Provisioning Profiles).

The confusing part was that the DEVICE already had the right profiles and they showed up as expected in build settings, so everything looked correct there, but the XCode LIBRARY didn't have them, so it was signing the app with...???


This was what fixed it for me. (I had already tried toggling the capabilities on/off, recreating the provisioning profile, etc).

In the Build Settings tab, in Code Signing Entitlements, my .entitlements file wasn't link for all sections. Once I added it to the Any SDK section, the error was resolved.

여기에 이미지 설명을 입력하십시오


여기에 나열된 모든 답변을 시도했지만 아무도 내 문제를 해결하지 못했습니다. 필자의 경우이 오류는 Appid 생성에서 바보 같은 실수로 인한 것입니다. 내가 사용하는 와일드 카드 앱 ID를 사용하는 대신 명시 앱 ID를 문제의 원인

애플리케이션이 원격 알림 (푸시 알림)을 수신하도록하려면 com.tutsplus. * 대신 com.tutsplus.push 와 같은 명시 적 앱 ID 를 사용해야합니다 . *

ScreenShot을 찾으십시오. 여기에 이미지 설명을 입력하십시오

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

반응형