メインコンテンツまでスキップ

iOS アプリへの SDK 組み込み

このセクションでは、Xcode を用いて作成したプロジェクトへの SDK 組み込み方法を説明します。

SDK 取得用トークンは、SDK 取得用トークンの作成を参照して予め用意しておいてください。

Xcode のインストール​

公式ドキュメントをご参照ください。

この資料では Xcode 16 を使用して解説します。 他のバージョンを利用する場合は、画面の表示等が異なる場合がありますので、ご了承ください。

Apple Developer Program への登録​

NFC に関連する機能を使用するためには、Apple Developer Program への登録が必要です。

詳しくは公式サイトをご参照ください。

プロジェクトの作成​

Xcode を起動し「Create New Project...」を選択します。

Xcodeの起動画面

「App」テンプレートを選択し「Next」をクリックします。

XcodeのAppテンプレート選択画面

プロジェクトの詳細情報を設定します。この資料では、SwiftUI を使用してサンプルアプリを作成します。

Xcodeのプロジェクト詳細情報設定画面

SDK の組み込み​

プロジェクトへの SDK 組み込みは、以下の 2 つの方法があります。

  • Swift Package Manager
  • CocoaPods

プロジェクトナビゲータから、プロジェクトの設定画面を開きます。

Xcodeのプロジェクトナビゲータからプロジェクト設定を開く画面

サイドバーの「PROJECT」の下にあるプロジェクト名(ここでは「Example」です)を選択し、上部のタブから「Package Dependencies」を選択し、「Packages」テーブルの下にある「+」をクリックします。

XcodeのPackage Dependencies設定画面

開いたパネルの右上にある検索欄に、パッケージのURLを入力します。 追加すべきパッケージのURLは、下記の通りです。

  • https://repo.platform.p8n.app/VerifyBaseMock/
  • https://repo.platform.p8n.app/VerifyBaseShared/
  • https://repo.platform.p8n.app/VerifyJPKIMock/
  • https://repo.platform.p8n.app/VerifyJPKIShared/

追加すべきパッケージのURLのうち1つを入力します。

XcodeのパッケージURL検索画面

認証画面が表示されるので、以下の通り情報を入力します。

Xcodeのパッケージ認証情報入力画面

SDK が正しく読み込まれたら、「Add Package」をクリックします。

XcodeのAdd Packageボタンが表示されたパッケージ追加画面

「Add To Target」でアプリターゲット(ここでは「Example」です)を選択し、「Add Package」をクリックします。

Xcodeのターゲット選択とパッケージ追加確認画面

1つパッケージが追加できたら、他の追加すべきパッケージについても同様に追加します。

プロジェクトの設定​

NFC の有効化​

プロジェクトナビゲータから、プロジェクトの設定画面を開きます。

Xcodeのプロジェクトナビゲータからターゲット設定を開く画面

サイドバーの「TARGETS」の下にあるアプリターゲット名(ここでは「Example」です)を選択し、上部のタブから「Signing & Capabilities」を選択します。 Team の部分をクリックし、Apple Developer Program に登録した Team を選択します。選択後、証明書がプロビジョニングされて下の「iOS」セクションのエラーが消えることを確認します。

XcodeのSigning & Capabilities設定画面

同じ画面で、右上の「+ Capability」をクリックし、「Near Field Communication Tag Reading」を選択します。

XcodeのCapability追加画面でNear Field Communicationを選択

「Near Field Communication Tag Reading」の Capability が追加されたことを確認します。

NFC Tag Reading Capabilityが追加されたXcodeの画面

タブから「Info」を選択し、下の「Custom iOS Target Properties」の「+」をクリックし、「Privacy - NFC Scan Usage Description」を追加します。 Value には、NFC を使用する理由(○○ カードの読み取り等)を記載します。

XcodeのInfoタブでNFC Scan Usage Descriptionを追加した画面

利用可能な NFC カードの設定​

同様にして、「ISO18092 system codes for NFC Tag Reader Session」を追加します。 Value には、以下の値を設定します。

  • 0003 (交通系 IC カード)
  • FE00 (電子マネー)
  • 88B4 (FeliCa Lite-S)

XcodeのInfoタブでISO18092 system codesを設定した画面

ヒント

モック環境では、FeliCa カード(交通系 IC カード、Edy、WAON など)や、ISO/IEC 14443-4 Type-A カード(クレジットカードなど)をタッチすると、マイナンバーカードの挙動がシミュレートされます。

このとき、読み取りの対象となる FeliCa のシステムコードを予め指定しておく必要があります。 上記3種類のシステムコード以外のシステムコードも指定することができます。

詳しくはiOS SDK リファレンスをご覧ください。

サンプルコードの追加​

プロジェクトナビゲータから、ContentView ファイルを開きます。

XcodeのプロジェクトナビゲータでContentViewファイルを開いた画面

以下のコードで置き換えてください。

import SwiftUI
import VerifyBaseMock
import VerifyBaseShared
import VerifyJPKIMock
import VerifyJPKIShared

func run(pin: String) async throws -> String {
// JPKI APへの接続準備を行います。
let session = ReaderSession(dispatchQueue: DispatchQueue.main)

// ここに実装を追加します。

session.close()
return "not implemented"
}

struct ContentView: View {
@State private var pin = ""
@State private var result = ""
var body: some View {
VStack {
TextField("パスワード", text: $pin).textFieldStyle(.roundedBorder)
Button {
Task {
result = "カードをタッチしてください ..."
do {
result = try await run(pin: pin)
} catch {
result = "エラー: \(error.localizedDescription)"
}
}
} label: {
Text("実行").frame(maxWidth: .infinity)
}
.buttonStyle(.borderedProminent)
ScrollView(.vertical) {
Text(result)
.frame(maxWidth: .infinity, alignment: .leading)
}
.textSelection(.enabled)
.frame(maxWidth: .infinity, alignment: .leading)
.padding(.top)
}
.frame(maxHeight: .infinity, alignment: .topLeading)
.padding()
}
}

struct ContentView_Previews: PreviewProvider {
static var previews: some View {
ContentView()
}
}

これ以降、ハイライトしたrun()の中身を実装していきます。

ビルド​

Xcode のツールバーから、任意の iPhone シミュレータを選択し、ターゲットに設定します。

Xcodeのツールバーでビルドターゲットを選択する画面

その後、ツールバーの「▶」ボタンをクリックして、ビルドを実行します。 ビルドが完了すると、雛形のアプリが起動します。

これで SDK の組み込みは完了です 🎉


次のステップ​

API リファレンスを参照して、その他の機能を確認しましょう。 ブラウザ上でモック環境へのリクエストを試すこともできます。

実際のアプリケーションでの署名検証(身元確認)は、身元確認の流れを参照してください。