[ios] PassKit을 활용한 스탬프카드의 생성

iOS 앱에 스탬프 기능을 추가하여 사용자가 구매를 할 때 스탬프를 받을 수 있는 프로그램을 만들고 싶다고 가정해 봅시다. PassKit은 Apple의 기기에 패스를 추가하고 관리하는 프레임워크로, 스탬프 기능을 갖춘 스탬프카드의 생성과 관리에 사용할 수 있습니다.

이번 글에서는 PassKit을 사용하여 iOS 앱에 스탬프카드를 생성하는 방법을 살펴보겠습니다.

필수 항목

먼저, 스탬프카드를 생성하기 위해 필요한 항목들을 정리해 보겠습니다.

  1. Pass Type Identifier: 패스의 유형을 식별하는 고유 식별자입니다.
  2. Team Identifier: 애플 개발자 계정의 팀 식별자입니다.
  3. Signing Certificate: 패스를 서명하는 데 사용되는 인증서입니다.
  4. Pass Type ID: Pass Type Identifier에 대한 Apple Developer 계정의 인증서가 연결된 Pass Type ID입니다.

스탬프카드 생성

PassKit을 사용하여 스탬프카드를 생성하는 방법은 다음과 같습니다.

먼저 .pkpass 파일과 해당 패스의 정보를 정의하는 pass.json 파일을 생성합니다.

{
  "formatVersion": 1,
  "passTypeIdentifier": "pass.com.example.stampcard",
  "serialNumber": "123456",
  "teamIdentifier": "TEAM_ID",
  "organizationName": "Example",
  "barcode": {
    "message": "12345",
    "format": "PKBarcodeFormatQR"
  },
  "locations": [
    {
      "latitude": 37.7749,
      "longitude": -122.4194
    }
  ],
  "voided": true
}

위 예제에서 passTypeIdentifier, teamIdentifier, organizationName 등은 해당 앱에 맞게 수정되어야 합니다.

다음으로, 해당 정보를 이용하여 .pkpass 파일을 생성합니다.

openssl smime -binary -sign -certfile WWDR.pem -signer PassCertificate.pem -inkey PassKey.pem -in pass.json -outform der -out pass.pkpass

위 명령어를 통해 .pkpass 파일이 생성됩니다.

Pass Type ID 설정

Pass Type ID를 Apple Developer 계정에서 설정해야 합니다. Identifier와 인증서를 추가하여 Pass Type ID를 만들고 연결합니다.

앱 내에서 스탬프카드 추가

스탬프를 받을 때마다 앱 내에서 해당 사용자의 스탬프카드에 값을 추가하여 업데이트합니다.

import PassKit

let passFileURL = Bundle.main.url(forResource: "pass", withExtension: "pkpass")!
let passData = try! Data(contentsOf: passFileURL)
let pass = try! PKPass(data: passData)

if PKAddPassesViewController.canAddPasses() {
    let addPassesVC = PKAddPassesViewController(pass: pass)
    self.present(addPassesVC, animated: true, completion: nil)
}

위 코드는 iOS 앱 내에서 스탬프카드를 추가하는 예시입니다.

결론

PassKit을 사용하여 iOS 앱에 스탬프카드를 생성하고 관리하는 방법을 살펴보았습니다. 스탬프카드를 통해 사용자들은 구매를 할 때마다 스탬프를 받아 포인트를 모을 수 있으며, 이는 사용자들의 앱 이용 경험을 향상시키는 데 도움이 될 것입니다.

참고문헌:

더 자세한 내용은 상기 문서를 참고하시기 바랍니다.