Flutter iOS 音声メモアプリ開発(10)App Storeへの公開
そろそろ、AppleのApp Storeの登録にチャレンジしたいと思います。
登録前作業
バージョン管理
ソースコードのバージョンやビルド番号、アプリのバージョンは、本来ルールを決めてきっちりと管理していくべきものです。そして、どのソースがどのアプリに対応しているかを管理していなければなりません。
今回は、一人で開発していることもあって、その辺りかなり杜撰なやり方をしていました。
少なくともアプリのバージョン管理はきっちりとしたいと思います。
よくあるバージョン番号の付与ルールは、セマンティックバージョニングと言われ、3つの数字で表されます。(1.0.0など)
この3つの数字はそれぞれ、メジャーバージョン、マイナーバージョン、パッチバージョンを表しています。
- メジャーバージョン:後方互換性のない機能の追加、変更
- マイナーバージョン:後方互換性のある機能の追加、変更
- パッチバージョン:バグの修正など
このほか、ビルドするたびにシーケンシャルな番号をビルド番号として付与するようです。
小さなアプリの場合、あまり長期にメンテナンスを続けるものではないことが多いかと思います。この定義で言うと、メジャーバージョンアップは別アプリと考えてもいいかもしれません。
Flutter のバージョンはpubsec.yamlの ”version”に記載されていますので、この番号を管理していきます。
アプリ名の変更
Flutter アプリの名称はプロジェクト名がデフォルトになっているかと思います。これはpubspec.yamlの"name"に記載されているかと思います。
日本語の名前を付けたくて、これを日本語に変更すると、エラーになってしまいます。
iOSの場合は、info.plistで以下のように日本語の表示名をつけることができます。
<key>CFBundleDisplayName</key>
<string>日本語アプリ名</string>
複数の国に公開する場合には、Localizeが必要になるようですが、今回は一旦これで進めます。
アイコンの設定
アプリのアイコンがデフォルトのままになっていましたので、これを変更します。
アイコンの設定には、flutter_launcher_iconsを使います。
これは、開発中にのみ必要なパッケージなので、pubspec.yamlのdev_dependencies:に追加して、flutter pub getを実行します。
dev_dependencies:
flutter_launcher_icons: ^0.10.0
あと、pubspec.yamlに以下の記述も追加しておきます。
flutter_icons:
android: true
ios: true
image_path: "assets/icon.png"
assetsフォルダに元となるイメージファイル(icon.png)をおいたのちに 、ターミナルから以下のコマンドを実行します。
flutter pub run flutter_launcher_icons:main
これで、アイコンファイルを作成してくれます。
この時、元のイメージファイルの背景が透明になっていると、のちの作業でエラーとなります。
最後にflutter cleanをしてからビルドをしなおしておきます。
App Storeへの申請
以下は、Apple Developer Program に登録していることが必要となります。
アーカイブ
Xcodeでプロジェクトを開き、メニューの<Product>-<Archive>を実行し、アーカイブを作成します。
その時にメニューからArchieveが選択できない事があります。これはデバイスで「Any iOS Device」を選択することで解決するようです。
問題なくビルドできれば成功です。ビルドに失敗した場合にはそのエラーを読んで対処します。
アーカイブが成功したら、アーカイブの一覧が表示されますので、出来上がったアーカイブを選択して「Distribute APP」をクリックします。
(この画面を閉じてしまった場合には、メニューWindow Organizerで開くことができます)
App Store Connect
以降は、契約内容などをよく読んで、申請情報を登録すれば良いのですが、Admobの利用を考えているため、「Appのプライバシー」についてはあらためて調査をしました。
Appのプライバシー
Appのプライバシーは、ユーザ情報の扱いに関するものです。作成したAppでユーザ情報を扱っていなかったとしてもサードパーティであるAdmobが以下のような情報を取得しています。
Apple の App Store データ開示要件に備える
bookmark_border
Apple は App Store でアプリを公開しているデベロッパーに対し、そのアプリのデータ利用に関して特定の情報を開示するよう義務付けています。この情報開示については、新しいアプリとアプリ アップデートに対して 2020 年 12 月 8 日から義務付けられることが発表されています。このガイドでは、7.68.0 以降の Google Mobile Ads SDK のデータ収集での慣行を説明し、AdMob を利用するデベロッパーが App Store Connect での疑問を簡単に解決できるようにサポートします。
Google Mobile Ads SDK は、AdMob のパフォーマンスを向上させるため、次のような特定の情報をアプリから収集する場合があります。
- IP アドレス: デバイスのおおよその位置の推定に使われる場合があります。
- ユーザーに関連しないクラッシュログ: 問題の診断と SDK の改善に使われる場合があります。診断情報は、広告掲載や分析の用途でも使われる場合があります。
- ユーザー関連のパフォーマンス データ(アプリの起動時間、ハングアップ率、エネルギー使用量など): ユーザー行動の評価、サービスの既存機能の有効性の把握、新機能のプランニングに使われる場合があります。パフォーマンス データは、広告表示(広告を表示する他の当事者とのデータ共有を含む)にも使われる場合があります。
- デバイス ID(デバイスの広告 ID やアプリ内限定のデバイス ID など): 第三者による広告配信と分析の用途で使われる場合があります。
- 広告データ(対象ユーザーに表示された広告など): 分析機能や広告向け機能の遂行のために使われる場合があります。
- ユーザーとサービスとの接点情報(アプリ起動のタップ数、動画再生回数など): 広告掲載の成果改善のために使われる場合があります。
追加データを伴うオプション サービス機能(詳細レポートなど)をご利用の場合や、追加データを伴う新しいサービス機能のテストにご参加の場合は、そうした機能やテストで追加データの開示が必要かどうかご確認ください。
Google Mobile Ads SDK の以前のバージョンをご利用の場合は、アプリの開示情報を的確なものにするため、最新バージョンへの更新をご検討ください。Google Mobile Ads SDK は今後も継続的に更新されます。この記事にはそうした更新情報が反映されるため、今後もこの記事を繰り返し確認し、必要に応じて開示情報を更新してください。
https://developers.google.com/admob/ios/data-disclosure?hl=ja
Appのプライバシーの設定において、アプリ独自の項目に加えて、Admobによる設定が必要となります。
全ての項目が入力できたら、保存してReviewを申請します。