스트리밍은 대부분의 브라우저와
Developer 앱에서 사용할 수 있습니다.
-
Mac 앱 공증의 새로운 기능
공증은 macOS와 함께 작동하여 사용자가 App Store 외부의 소프트웨어를 Mac에 안전하게 다운로드할 수 있도록 합니다. altool에서 notarytool로 전환해야 하는 요구 사항과 Xcode GUI로 앱 공증 시 전반적인 성능을 향상하는 방법에 대해 알아보세요. 또한 인터넷에 연결된 시스템에서 Notary 서비스와 상호 작용하기 위한 API에 대한 정보를 공유합니다.
리소스
관련 비디오
WWDC23
WWDC22
WWDC21
WWDC19
-
다운로드
♪ 부드러운 힙합 음악 ♪ ♪ 안녕하세요, Johnathan입니다 macOS 개발자는 소프트웨어를 공증 서비스에 제출합니다 악성 소프트웨어로부터 고객을 보호하기 위해서죠 작년에 우리는 공증 도구 CLI와 명령줄 인터페이스로 공증을 위해 앱을 더 빠르고 간단하게 제출하는 법을 개발했죠 올해도 여러분과 공증 서비스의 상호 작용을 위해 몇 가지를 개선하면서 성능과 유연성을 지속적으로 향상시키게 돼서 기쁘네요 이번 세션의 주제는 세 가지입니다 우선 중요한 마감 기한에 대해 얘기할게요 공증 도구로 쓰던 altool에서 notarytool로 마이그레이션을 하는 기한입니다 다음은 Xcode와의 통합에서 개선된 점을 얘기해 볼게요 곧 출시될 Xcode 14에서는 notarytool로의 제출 속도를 Xcode에 가져왔습니다 마지막으로 공증 서비스와 상호 작용 하는 새로운 방법을 이야기해 보죠 REST API를 통해 업로드하는 곳을 확장하고 상태를 확인하고 제출물을 검토할 수 있어요
작년에 우리는 notarytool을 소개했습니다 공증 도구인 altool의 대체제였죠 후반부에는 Xcode를 다룰 건데요 Xcode 14에서 업데이트된 백엔드로 이동한 이야기를 할 겁니다 altool 및 Xcode 13에서의 마이그레이션 경로가 마련됐는데 과거의 공증 방법에 대한 만기 날짜를 2023년 가을로 발표합니다 altool에서 notarytool로의 이동에 도움이 되는 작년 영상을 참조해 주세요 '맥 앱의 더 빠르고 간단한 공증'입니다 몇 가지 세부 사항을 설명해 볼게요 notarytool CLI는 Xcode 13 번들을 포함하여 2023년 가을 이후에도 계속 작동할 겁니다 하지만 늘 그랬듯이 최신 개선 사항 및 수정 사항을 반영하도록 업데이트하세요 Xcode 13 UI를 사용하여 공증 서비스에 업로드하는 건 마감일 이후로 중지됩니다 Xcode 14의 성능 개선 사항에 주의를 기울여 주세요 하지만 작업 방식이 크게 변하지는 않을 것으로 예상됩니다 마지막으로 altool을 사용한 모든 공증은 2023년 가을에 모두 중단될 겁니다 다시 한번 강조하지만 작년 WWDC 영상에서 notarytool로의 마이그레이션을 알아보세요 다음은 Xcode 14에서의 공증 관련 변경 사항을 알아보죠 작년에 도입한 notarytool CLI와 동일하게 신뢰할 수 있는 백엔드를 사용하도록 Xcode에 내장된 공증 지원을 마이그레이션했습니다 덕분에 Xcode 14에서는 작년에 발표한 것처럼 notarytool의 성능 향상을 4배가량 이뤄 내서 기분이 좋네요 가장 좋은 점은 업데이트만 하면 프로젝트 설정이나 일하는 과정을 바꾸지 않아도 성능 향상을 적용할 수 있다는 겁니다 이 영상의 마지막 주제는 공증을 위한 새로운 서비스 REST API의 발표입니다 이 새로운 서비스로 여러분은 공증 서비스와 더 많은 장소에서 더 유연하게 상호 작용할 수 있습니다 중요한 개념을 알아볼까요? 이 새로운 API는 공증 서비스에 더 유연한 인터페이스를 허용합니다 JSON 기반 웹 서비스로 통합은 대부분의 언어에서 상당히 간단합니다 이 API로 인터넷이 연결되는 모든 곳에서 제출물을 업로드할 수 있습니다 현재 macOS가 돌아가지 않는 지속적 통합 서버에서도 가능하죠 또 이 API에서는 공증 서비스와의 다른 상호 작용도 지원됩니다 예를 들어 제출 내역을 불러오거나 과거 제출 세부 정보를 검색할 수 있죠 REST API의 도입 목표는 더 많은 플랫폼에서 공증 소프트웨어를 지원하고 자동화된 시스템에서 공증 서비스와 더 쉽게 상호 작용 하는 겁니다 이 방법은 현재의 제출 수단인 Xcode와 notarytool을 구동할 수 없는 환경에서 이들을 보완합니다 Linux 기반 지속적 통합 엔진 같은 거겠죠 예를 들어 앱을 배포하기 전에 공증인에게 제출하는 배포 파이프라인을 만들고 싶다고 가정해 보죠 새로운 API와 몇 가지 기본 스크립트로 과정을 쉽게 자동화할 수 있습니다 자세히 들여다보기 전에 인증이라는 중요한 주제가 있습니다 다른 App Store Connect API와 마찬가지로 JSON 웹 토큰 또는 JWT를 사용해 API에 인증할 수 있습니다 인증에 관한 자세한 내용이나 곧 보여 드릴 코드에 대해 더 궁금하시면 아래 링크에 있는 REST API 문서에 접속해 주세요 이 스니펫에 토큰 변수로 유효한 JWT가 있어 함수에 전달됐다고 가정합니다 Python에서 공증인에게 파일을 제출하는 예시를 살펴보죠 이 기본적인 흐름은 다른 프로그래밍 언어에도 적용됩니다 공증인에게 파일을 업로드하는 단계는 크게 두 가지입니다 1단계는 공증인에게 파일을 업로드하겠다고 알리는 겁니다 여기엔 파일 이름이나 SHA-256처럼 파일의 기본 정보가 몇 가지 포함돼 있습니다 응답에는 파일 업로드에 필요한 정보와 파이프라인을 통해 여러분의 제출물을 추적하는 ID가 포함돼 있습니다 2단계는 실제로 Amazon S3을 통해 공증 파일을 업로드하는 겁니다 이때 가장 선호하는 S3 SDK를 가져와야 합니다 이 예시에서는 boto3 라이브러리를 사용할 겁니다 여기서는 이전 호출에서 반환된 임시 자격 증명을 사용해 클라이언트를 인증하고 만듭니다 그다음 클라이언트를 사용해 1단계의 응답에 지정된 버킷 및 개체에 파일을 업로드하죠 업로드를 하고 나면 공증 파이프라인을 통해 제출이 진행됩니다 이 과정은 대부분의 제출에서 15분 내로 끝날 겁니다 업로드하고 나면 배포 전에 공증 서비스가 여러분의 제출을 성공적으로 처리했는지 확인해야 합니다 넓게 말하면 두 가지 접근법이 있습니다 첫 번째이자 가장 간단한 방법은 동일한 API를 통해 결과를 확인하는 거죠 또 다른 방법은 notarytool과 함께 도입된 웹후크 지원을 통해서예요 먼저 API 접근 방식을 살펴볼게요 공증인에게 제출한 상태를 확인하는 건 매우 간단해요 업로드 과정 중에 수신된 제출 ID로 요청을 할 수가 있죠 응답 일부는 현재 제출 상태고 공증인이 처리를 완료할 때까지 '진행 중'으로 유지되겠죠 처리가 끝나면 제출 최종 상태로 전환돼서 '승인됨' 또는 '무효' 같은 결과가 뜰 거예요 제출이 완료되면 API를 사용해서 이 업로드에 대한 공증 기록을 검색할 수 있어요 이런 엔드포인트에 대한 자세한 내용은 공증 REST API 설명 문서를 참조해 주세요 다음은 상태를 검색하는 두 번째 방법, 웹후크예요 웹후크 진행 과정은 대체로 똑같지만 이번에는 업로드 초기 요청에서 웹후크 URL을 제공합니다 형식에 관한 자세한 내용은 공증 REST API 설명 문서를 참조하세요 이전과 마찬가지로 이 작업은 공증 서비스가 여러분의 제출물을 분석하는 트리거가 됩니다 자동 분석이 끝나면 티켓이 생성되고 최종 상태가 저장됩니다 완료되면 공증 서비스가 제공된 웹후크 URL을 호출합니다 이 호출의 내용에는 제출 ID와 팀 ID, 우리가 보낸 것임을 확인하는 서명이 포함돼 있죠 이 알림을 수신하면 다음 작업을 선택할 수 있어요 예를 들어 원래 제출자에게 알리거나 자동 배포 파이프라인을 시작할 수도 있죠 notarytool에서 대기하는 것과 달리 여기선 파일을 업로드하는 시스템과 공증 후 작업 자동화 시스템을 분리할 수 있습니다 우리는 이 새로운 REST API가 지속적 통합 시스템 및 macOS용 소프트웨어를 구축하기 위한 기타 도구와의 통합의 문을 열어서 기쁘네요 마지막으로 한 번만 더 상기시키자면 2023년 가을까지 Xcode 14 notarytool 혹은 REST API를 직접 사용하는 것으로 마이그레이션하셔야 합니다 마지막으로 여러분이 구축한 파이프라인에서 아직 notarytool을 사용할 수 없다면 이번 기회에 공증 REST API를 시도해서 자동화의 포문을 열어 보세요 아래에서 문서 링크를 찾으실 수 있습니다 감사합니다 나머지 WWDC22도 즐기세요 ♪
-
-
4:53 - REST API: upload file for notarization
# Upload file for notarization def upload_file(token, filepath, sha256): data = { "sha256": sha256, "submissionName": os.path.basename(filepath) } resp = requests.post( "https://appstoreconnect.apple.com/notary/v2/submissions", json=data, headers={"Authorization": "Bearer " + token}) output = resp.json() aws_info = output["data"]["attributes"] submission_id = output["data"]["id"] client = boto3.client( "s3", aws_access_key_id=aws_info["awsAccessKeyId"], aws_secret_access_key=aws_info["awsSecretAccessKey"], aws_session_token=aws_info["awsSessionToken"]) client.upload_file(filepath, aws_info["bucket"], aws_info["object"])
-
6:12 - REST API: wait for completion
# Wait for completion def watch_upload(submission_id, token): while True: resp = requests.get( "https://appstoreconnect.apple.com/notary/v2/submissions/" + submission_id, headers={"Authorization": "Bearer " + token}) output = resp.json() current_status = output["data"]["attributes"]["status"] if current_status != "In Progress": return current_status # For example: Accepted or Invalid time.sleep(30) # Allow time for submission to progress
-
-
찾고 계신 콘텐츠가 있나요? 위에 주제를 입력하고 원하는 내용을 바로 검색해 보세요.
쿼리를 제출하는 중에 오류가 발생했습니다. 인터넷 연결을 확인하고 다시 시도해 주세요.