iOSアプリの譲渡について

こんにちは。アプリ開発グループの楠本です。ニコニコ漫画や読書メーターのiOSアプリ開発を担当しています。
先日株式会社ドワンゴからブックウォーカーへアプリ移管を行い、無事何事もなく完了することができました。

本記事ではiOSアプリの移管についてをご紹介致します。この記事を見た人に移管に関する具体的な作業イメージを持ってもらえれば幸いです。

※この記事の情報は2022年1月時点のものとなります。

公式のアプリ譲渡の概要も合わせてご覧ください。

https://help.apple.com/app-store-connect/#/deved688524f

目次

事前準備

リポジトリなどに含まれるチームIDを譲渡先のチームIDに変更

チームIDは様々な箇所で利用されていたりします。
例えば
・FastlaneやCI等で設定されている。
・ソースコード中のコメントアウトに記載されている。
・プッシュ通知のスクリプトに利用されている。

いつでも変更できるようPull Requestを事前に作っておきましょう。

ユニバーサルリンクのapple-app-site-associationに譲渡先のチームIDを追加

移管後初回リリースまでにはapple-app-site-associationに譲渡先のチームIDを追加しておきましょう。
なぜなら、移管完了後にリリース済みアプリのチームIDが自動で変更されるわけではありません。
移管承認後の初回審査提出~リリースでユーザがインストール/アップデートすることで適用されるからです。
強制アップデートでもしない限りしばらく移管前のチームIDも残しておくのが良いかと思われます。

App情報を保存

https://help.apple.com/app-store-connect/#/deved688524f

App は譲渡後にあなたのアカウントから削除されるため、譲渡を行う前にその App に関するすべての情報のバックアップを取っておく必要があります。

譲渡で全ての欄が空欄になるわけではありません。
公式ドキュメントの通り全てのアプリ情報をメモしておきましょう。
アプリ受け入れ時の質問は以下の通りでした。
  ・ プライバシーポリシーURL
  ・ サポートURL
  ・ マーケティングURL
  ・ 住所
  ・ 連絡先情報
  ・ App Review 連絡先情報
尚、連絡先情報の電話番号は(+81) 50-xxxx-xxxxと国番号をつけないとエラーで受け入れ完了できないことに注意です。

譲渡先のApple Developer登録 ~ 受け入れ準備

Apple Developer登録されていなければ譲渡できません。登録しましょう。

1. 譲渡先のAppStoreConnectへメンバーを招待する
・リリース担当者
・売り上げやインストール数を閲覧する担当者
※招待リンクは1日で期限切れになります!!

2. 今後の規約同意ルールをどうするか
規約更新内容を確認や同意するまでの流れを相談する先は決めておきましょう。

3. 課金機能がある場合

  • 入金口座の設定
  • 契約/税金/口座情報の納税フォームからW-8BEN-Eの提出

    • 日本から提供するアプリ収益は日本とアメリカの二重課税対象となります。
      ですが、日・米租税条約という日米間の二重課税を免税 or 減税する条約があります。
      租税条約の申告書には2種類あり
      ・個人用のW-8BEN
      ・法人用のW-8BEN-E
      があるので、”法人用のW-8BEN-E”を納税フォームから提出しましょう。

    • Foreign TINには、個人はマイナンバー、法人は法人番号を入力しましょう。
      法人番号や所在地については下記のリンクから確認することも可能です。
      ・国税庁法人番号公表サイト

      https://www.houjin-bangou.nta.go.jp/

4. レシート検証に利用するパスワードの確認
消耗型課金のみの場合はレシート検証にパスワードは不要です。
もし、パスワードを利用している場合は利用しない対応で良いかと思います。

サブスクリプションを提供している場合はレシート検証にパスワードが必要です。
パスワードには2種類あります。
・マスター共有シークレット
・App 用共有シークレット
※移管で引き継がれるApp 用共有シークレットでなければ アプリ移管完了後のレシート検証に失敗するので注意

f:id:bookwalker_writer:20220125183903p:plain

Keychainの保存先を検討

Keychainの保存にはチームIDが利用されており、移管によるチームIDの変更でアクセスできなくなります。セッション情報などをKeychainに保存している場合、移管期間中はUserDefaultsに暗号化して保存することを検討しましょう。

https://developer.apple.com/library/archive/qa/qa1726/_index.html#//apple_ref/doc/uid/DTS40014942

利用規約更新のユーザ告知

利用規約の更新しないといけない可能性がありますので、ユーザへの告知を事前にすべきか相談しておきましょう。

参考: 読書メーター公式ブログ — 読書メーター アプリの販売元変更のお知らせ

Sign in with Apple利用ユーザの譲渡IDを作成

Sign in with Appleで取得できるユーザ識別子はチームIDが異なると別の値(別のユーザ)となるため、移行の必要があります。
弊社では読書メーターアプリでSign in with Appleを提供しており、サービスIDは元々読書メーターのみに紐づいていてWebViewで提供しています。
もし、サービスIDをグループとして別のアプリとも紐づけている場合は、アプリを譲渡できないため、サービスIDをグループから解除して独立したものにしておく必要があります。

https://help.apple.com/developer-account/?lang=en#/dev04f3e1cfc

譲渡IDを作成する方法は後述記載の 手順詳細 > Sign in with Appleの移管手順 > No.2までを実行してください。

Test Flight情報を削除

以下の3点を実施してください。

・Test Flightの全てのバージョンのビルドを期限切れにする。
・内部テストと外部テストを削除する。
・テスト情報の欄を全て空欄にする

 

移管手続き

1. AccountHolderでAppの譲渡を押下

f:id:bookwalker_writer:20220126115800p:plain

2. 画面下部にある"続ける"を押下

f:id:bookwalker_writer:20220126115600p:plain

3. 譲渡先のチームIDとAccout HolderのApple IDをテキストフィールドに入力
4. "続ける"を押下

f:id:bookwalker_writer:20220126032558p:plain

5. "譲渡をリクエスト"を押下

f:id:bookwalker_writer:20220127005236p:plain

6. 譲渡リクエスト完了

f:id:bookwalker_writer:20220126032922p:plain

7. Apple審査待ち

「You Received an App Transfer Request」と審査通過メールが届いたら承認手続きをしてください。

移管完了当日

FirebaseのチームIDを変更

プロジェクトの設定からチーム IDの更新をしましょう。
Cloud MessagingやDynamic Linksが自動で生成するapple-app-site-associationなどのチーム IDはここの値を利用します。

f:id:bookwalker_writer:20220126031651p:plain
Dynamic Linksのapple-app-site-associationには5分程で反映されていました。

プッシュ通知の認証キーを発行

移管完了から2時間経過後でも前の認証キーで通知が送れていましたが、いつまで利用できるかは保証されていません。すぐに新しい認証キーを設定しましょう。
ニコニコ漫画や読書メーターのプッシュ通知にはFirebase Cloud Messagingを利用しています。
プロジェクトの設定 → Cloud Messagingで既に設定されている認証キーを削除してから新規で追加しましょう。

f:id:bookwalker_writer:20220126031728p:plain

Sign in with Appleの移行作業

新たなユーザ識別子を紐づける作業です。
後述記載の 手順詳細 > Sign in with Appleの移管手順 > No.4から実行してください。

移管完了後

テストフライトの配信者設定

AppStoreConnectへメンバー追加作業が行われていれば設定するだけです。

apple-app-site-associationにある譲渡前のチームIDを削除

全体的にユーザがアプリバージョンを更新したタイミングで行いましょう。

年度末自己分類報告書の提出準備

アプリからHTTPS通信をしているなどの場合、毎年2月1日までにレポート(CSV)を crypt-supp8@bis.doc.gov と enc@nsa.gov 宛にメールで送信する必要があります。
譲渡によってアプリを管理する会社や所在地も変更される可能性がありますので、レポートの内容を確認して提出の準備をしておきましょう。
レポート(CSV)の詳細

PRODUCT NAME

MODEL NUMBER

MANUFACTURER

ECCN

AUTHORIZATION TYPE

ITEM TYPE

SUBMITTER NAME

TELEPHONE NUMBER

E-MAIL ADDRESS

MAILING ADDRESS

NON-U.S. COMPONENTS

NON-U.S. MANUFACTURING LOCATIONS

xxxxxxxx

xxxxxxxx

SELF

5D992

MMKT

mobility and mobile applications n.e.s

BOOK WALKER Co.,Ltd.

(+81) 50-xxxx-xxxx

xxxxxxxxxxxx

2-13-3 Fujimi, Chiyoda-ku, Tokyo-to 102-0071 Japan

YES

Tokyo Japan

 

手順詳細

Sign in with Appleの移管手順

No.

手順

備考

1

Sign in with Appleをできないようにする

アプリの審査は落ちるようになるので気をつけましょう。

2

全ユーザの譲渡IDを作成

以降でAppleサインインされてしまうと移行対象から外れてしまうので1の手順が必要です。
client_secret → access_token → Transfer IDの作成にはアプリ情報として、Team ID, Service ID, Key ID, Secret Keyが必要になります。

f:id:bookwalker_writer:20220126005917p:plain

f:id:bookwalker_writer:20220126021520p:plain

Sign in with Appleをネイティブ実装している場合は
Service IDではなくApp IDが必要です。

ドキュメント: 

Apple Developer Documentation

3

移管開始~完了

AppStoreConnectの移行手続き

4

Sign in with Appleの認証キーを生成

Key発行時に取得できる秘密鍵は無くさずに保管しておきましょう。

f:id:bookwalker_writer:20220126010434p:plain

5

新たなユーザ識別子を発行

必要なアプリ情報
1. 移管後のTeam ID
2. 引き継がれたService ID
3. 手順4で作成したKey ID
4. 手順4で生成されたSecret Key

Apple Developer Documentation

数件400 invalid requestになるケースをAppleテクニカルサポートに確認してみたところ、ユーザ側で "App での Apple ID の使用を停止する" をされていると発生するとのことでした。

support.apple.com

6

Sign in with Appleをできるようにする

 

その他

アプリの譲渡を受けるとApp Store Small Business Programの参加資格がなくなることに注意です。

課金の売り上げについて、徐々に少なくなりますが、移管してから3ヶ月経っても未だに前の口座に入金がありました。売り上げを管理するチームには事前に連絡しておくと良いです。

アプリ譲渡について、他にも App Store Connect ヘルプ などが参考になります。

まとめ

アプリ移管はミスがクリティカルなものになると思うと、いくら調べても不安が残るものです。
移管時の作業はできるだけ減らすべく事前準備に全力を尽くしましょう。