[SwiftUI]iPhone BONDSアプリの開発状況まとめ

スポンサーリンク
[SwiftUI]iPhone BONDSアプリの開発状況まとめ SwiftUI
スポンサーリンク

iPhoneアプリを始めてリリースするためのBONDS奮闘記

iPhoneアプリを始めてリリースするためのBONDSの奮闘記。

iPhoneアプリの機能を実現する際、どの機能がどこまで実装できているのかを管理することはとても重要なことです。

いつまでにどんな機能を実装するのかをまとめておきましょう。

BONDS iPhoneアプリプログラミングチュートリアルで作りたいアプリケーションについてまとめました。

このページでは、開発設計のノウハウを残すこともあり、ありのままの状態を公開します。

その中で、同じような問題を受けている人の助けになればと思うのです。

ユーザエクスペリエンス
【開発機能】
進捗状況達成できたことリリースまでの課題
アプリを起動しサービスを始める。
起動時広告の表示
実装完了・アプリを起動すると、Google AdMobの広告が表示される。
・起動時広告がサブスクリプション時にも裏で起動しているのを修正。(表示されていないが音が出る場合がある。)
→IDを無しにすることで、広告が動作しないように変更。
・テスト環境のコードになっているため、リリース用のコードに修正する必要がある。
Topメニューを開きサービスを開始する。
【サービスメイン機能を実装する。】
未完成
メニュー画面を選択して、Amazonアソシエイトのリンクを表示する。
Amazonアソシエイト
実装完了Amazonアソシエイトのアソシエイトリンクを使ってアプリにWeb画面を表示する。・アソシエイトのリンクをアプリに貼って良いか確認する。
・楽天ふるさと納税のアフィリエイトリンクにする。
・今後、Amazonセラーセントラルに移行した時にリンクを変更する。
メニュー画面を選択して、Twitterのリンクを表示する。
【Twitter】
実装完了Twitterのリンクを使ってアプリにWeb画面を表示する。
メニュー画面を選択して、Wordpressのリンクを表示する。
【WordPress】
実装完了WordPressのリンクを使ってアプリにWeb画面を表示する。
メニュー画面を選択して、アプリのカスタマイズをする。
Apple iOS SwiftUIのサブスクリプション購入後とAdMobの広告を表示させないようにする。
実装完了メニュー画面は通常固定のURLがあらかじめ実装された状態であるが、アプリ内アイテムを購入してもらあったことにより、URLを変更することができるようにする。
メニュー画面を選択して、アプリの情報を表示する。
【利用規約】
【プライバシーポリシー】
実装完了最低限必要な、免責事項の表示、著作権について、プライバシーポリシーなど表示する。・Xcode内にテキストベースでの内容を記載しているため、記載内容が十分なのかを確認する。
・著作権の表示内容を決定する。
ショッピング機能
【町いちばんの商品・サービス】
未実装・アプリに商品を表示して、Apple Payの機能を使って支払いまで実施する。

・同じ商品を選択すると、ショッピングカートから削除するとすべて消えてしまう(一つずつ追加・削除できるように)。
・販売する商品の決定・商品の定義、写真や詳細の内容を表示する。(現在は、8つの商品を仮に設定。)



・Apple Payの支払いを本番環境として定義する。(デベロッパのアカウントが必須。)

・商品を販売する場合のユーザの顧客情報の管理方法の確認。
サブスクリプション機能を契約すると、広告が表示されなくなる。
Apple iOS Appで有料の課金アプリを作成する。【サブスクリプション】
実装完了アプリの課金アイテムを購入すると、Apple Payで支払いができるようになる。
・アプリのサブスクリプション機能を有効にする。日付が経つとサービスが無効化される。
・サブスクリプションの購入をしたときに、どのようなサービスを有効にするかの連携機能を拡充する。
アプリを使ったこと、アプリでの広告を見た時にポイントを購入。
SwiftUI PassKit Apple内通貨(コイン)を実装する
実装完了アプリ内通貨サービスで、アプリを購入、購入した際の処理を定義。

・コインを購入し、利用した時の通帳へ入れる金額のロジックを実装。

・アプリの価値と、現金の価値の調整。1円を何ポイント換算するかの全体の設計。
→100円で50Coin、200円で110Coin、300円で、170Coinで設計。

・広告を見た時のポイント付与と実際のAdMobで得られる課金機能の整合どり。
→1回広告を見ると、1Coinで実装。


・アプリを購入をした後にポイントに変更して、そのポイントを何に使うかの定義。
YouTubeを見て商品を購入したりサービスの詳細を知る。
YouTube
実装完了・Wordpressのリンクを使ってアプリに任意のYouTube画面を表示する。
・アプリのユーザに紹介するYouTube動画を決定する。
・様々なチャンネルがあるため、どのようにして1元管理するかの検討が必要。
WordPressの記事を表示させる。
Swift UIでWP REST APIを呼び出し、WordPressの記事をアプリに表示させる方法
実装完了WordPressのRestAPIのJSONコードを使って、直接アプリに表示させる。記事が増えるとアプリのリンクも増えるようになる。・アプリに表示させるカテゴリを整理する。(必要な記事のみを表示させる。)
・商品紹介詳細と、アプリの購入を連携できているかのチェック。
メンバーカードを表示させる
Apple Wallet パスサーバーリファレンス実装方法を使って会員証などの集客ツールを作成する
検討開始メンバーカードを実装する。(メッセージの認証のため、デベロッパアカウントが必要。)
Tap To Payでの実装を行う。
Apple Pay(Tap to Pay)を使えるPOSシステムを作る
未実装

iPhoneアプリの付加機能の作成

付加機能目的
イベント機能を実装する。イベントがある日などに、アプリを売り込むために、イベント機能を実現する。
App Store Connectでアプリケーションを見つけやすいようにする。
オファー機能を実装する。サブスクリプションを購入してもらうために、オファー機能を実装する。

カスタムコードのオファー機能でサブスクリプション獲得機会を得る。

次は App Store Connectでカスタムコードを作成する手順を説明します。

オファーコードキャンペーンを準備するにはApp Store Connectで Account Holder /Admin/App Manager Developer/Marketingのいずれかの役割が割り当てられている必要があります。

まず「カスタムコード」の横のプラスマークをクリックします。

カスタムコードを作成して入力する画面が表示されます。

カスタムコードは最長64文字で特殊文字は使用できません。

作成したカスタムコードは、後で変更することができないことに注意してください。

またAppの別のオファーキャンペーンや別のサブスクリプションに使用することもできません。

別のオファーですでに使用されているカスタムコードを使用して新規のキャンペーンを作成するにはまずそのコードを無効化する必要があります。

その後カスタムコードの利用回数の上限を選択します。

これは カスタムコードを利用できるユーザーの総数です。利用回数の上限は一度に最大で25,000回ですが、これ以上必要な場合は同じオファーで同じカスタムコードを複数回使用することも可能です。

1つのAppにつき四半期ごとに最大150,000回分まで設定できます。

次は 有効期限を選択してコードが有効な期間を設定します。

期限なしのコードを作成する場合は日付選択画面で 「期限なし」オプションを選択します。

有効期限を選択した場合は選択した日付の米国西海岸時間の12:00 amに失効します。

キャンペーンを開始した後は有効期限を変更できません。最後に「作成」をクリックしてオファーを有効にします。オファーは一度に10件まで有効にすることができます。

配布済みのオファーを編集することはできないためユーザーの利用資格を変更する必要がある場合は、別のオファーを新たに作成します。

前述したようにコードからコード利用のためのURLを作成してユーザーに直接提供することができます。

このURLをタップすると ユーザーはオファー利用ページに直接誘導されます。

このURLを作成するにはオファー詳細ページのサンプルリンクをコピーし、そのURLの末尾にカスタムコードを追加します。 この機能の概要の説明は以上です。

カスタムコードキャンペーンの構成に関する 詳細についてさらに細かく説明します

Raul:ありがとう Bryan ではオファーコードを プロダクト アプリケーション バックエンドシステムに 導入する際に考慮すべき事項について 3つのセクションに分けて説明します

最初にコードの利用 次にオファーの構成 最後に StoreKitに関する 考慮事項について説明します。

ではコードの利用から説明します。

コードの利用について説明する前に 登録者は 構成された各オファーコードを それぞれ1回しか利用できない という制限について認識する 必要があります。

これらのオファーは App Store Connectで設定した際に 追加した名称によって識別できます。

また登録者は その時点でのサービスレベルを 下回る結果となるオファーコードを 利用することができないという点にも 留意する必要があります。

コードは 登録者がすでに利用している サブスクリプションより高いレベルのSKU または同じレベルのSKUを 対象とする必要があります。

オファーの対象とする 登録者を選択する際は その資格に関するロジックを 検討することが理想的です。

登録者がコード利用時に 利便性を感じるのは 前述のApp内コード利用シートを用いた コード利用方法です。

これは presentCodeRedemptionSheet()が 実装されているApp内で 登録者がオファーを直接利用できるため 理想的な方法です。

この場合は コード利用シートがApp上に表示されるため 最前面でアクティブに実行されているApp上で コードを利用する唯一のケースとなります。

余談ですが App内にコードを表示する場合は ユーザーが コードを簡単にコピー/ペーストできるように しておくと便利です。

もうひとつのコード利用方法は カスタムオファーコードを 事前に反映させたURLを利用する方法です。

この場合は 2つの点を考慮する必要があります それは Appのアイデアと オファーコード自体についてです。

これは QRコードを通じて オファーコードを宣伝する場合も 同じように 有効な方法となります。

前述のように コードは App外で使用される場合もあるため 起動時にTransaction.Updatesを 検知することが重要です。

これは 承認と購入のリクエスト PSD2やオファーコードなどの その他のシナリオにおける 重要なベストプラクティスです。

初期設定を適切に行えば トランザクションを見逃すことはありません。

一方でfinishというメソッドは トランザクションをキューから削除し ユーザーがアイテムやサービスを 受領したことを通知します。

この2つの処理間が適切に実装されることで 最適なユーザー体験が 提供されることになります。

次は構成について説明します オファーコードを構成する際は お試しオファーを併用して 利用できるようにすることも可能です。

ここではお試しコードとオファーコードの 併用の有無で変わる ユーザー体験を視覚的に説明します。

このシンプルなシナリオでは 通常の月間サブスクリプションに 1週間の無料お試しオファーが 構成されています。

マーケティングキャンペーンには 1週間無料でサーバーにアクセスできる コードが作成されています。

では お試しオファーとオファーコードの 併用を許可しない場合に どうなるか見てみましょう。

登録者がオファーコードを使用すると オファーコードは即時に有効となり この場合は 1週間無料になります。

オファー期間が終了すると サブスクリプションが更新され 通常料金が適用されます。

その後のいつかの時点で 登録者がサブスクリプションを 中断または解約することもありますが サブスクリプションを再開した場合は まだお試しオファーを利用する資格があるため 1週間の無料トライアルを利用できます。

この構成では ユーザーがどの時点で お試しオファーを利用できるか のみが検証されます。

この利用体験は ターゲティングする グループに応じてオファーコードを 作成する際に留意すべきものです。

次に この両方を許可した場合はどうなるでしょう?

同じシナリオを使って説明します 今度は 登録者がオファーコードを使用すると 最初にお試しオファーが有効になり 次にオファーコードの期間が開始して その後にサブスクリプションが更新され 通常料金が適用されます。

この説明で 構成方法の違いがどのように ユーザー体験に影響するのか お試しコードとオファーコードの併用を 許可すべきか否かを判断する。

参考になれば幸いです。

最後に StoreKitに関する考慮事項です オリジナルのStoreKit API およびStoreKit 2では トランザクション情報や更新情報に含まれる タイプと識別子を使用して 利用されたオファーを確認できます。

オファーコードのタイプは3で 識別子には 設定した各オファーに対して App Store Connectで追加した 固有の文字列が含まれます。

サーバー間構成が設定されている場合は VerifyReceipt/App Store Server API Server Notifications Version 2を使用して この情報を取得できます。

OFFER_REDEEMEDタイプの通知は 必ず対応するサブタイプを使用して 解析してください。

本日のセッションのまとめです カスタムコードは現在利用可能で 大量配布が必要となるキャンペーンで 利用できます。

Sandboxを活用すれば 中断された購入や コード使用環境をテストすることも可能です。

最適なユーザー体験を実現するために App内で実行できる コード利用フローの採用も検討しましょう。

オファーの詳細や条件 コードの利用方法などは 明確に記載し iOS 14.2以降のみに対応するという 注意事項も添えてください。

さらに詳しい情報を知りたい場合や 今日説明した内容の 資料を参照したい場合は Apple DeveloperのWebサイトに アクセスしていただければ 優れたリソースを いつでも参照することができます。

以上で 本日のプレゼンテーションを終了します。

リリースされたこれらの新機能を 皆さんがどのように活用するか とても楽しみにしています。

ご視聴ありがとうございました。

イベント機能を実装する。

App 内イベントの提供 - App 内イベントの提供 - App Store Connect - ヘルプ - Apple Developer
App Store Connect で管理するアプリ 1 つにつき最大 10 個までアプリ内イベントを作成し承認を受けることができます。一度に公開できるイベントの数は、国や地域に関係なく、アプリごとに 5 つまでです。

App Store Connectの設定を行う

App Store Connectで新規Appを登録しリリースする方法のまとめ

App Store Connectの設定を行う

App Store Connect契約後に、アプリを登録した後の変更点とはまった点とは

アプリの利用シーンを考える。

町いちばんの商品・サービス

App Store Connectを使ってみよう

リリース前に、テスト環境から本番環境に変更する設定変更

リリース時に共通で変更する必要がある項目

本番リリースに向けての作業実施内容変更時の覚書メモチェック
Xcodeの設定を本番環境に変更する・サブスクリプション、アプリ内課金の設定を、App Store Connectの設定に変更する。App Store Connectのサブスクリプション、アプリ課金を作成する。
署名書の作成、IDとの紐付け、名称などをXcodeとApp Store Connectの設定で合わせないと表示されない。
XcodeにApp Store Connectの情報と連携する・App Store Connect上で取得した署名ファイルを利用する。Xcode環境での実装では動作するが、本番環境では、App Store Connectで取得したIDに紐づける必要がある。
Apple Pay、WalletのPass、Order、Subscriptionなどのお金に関わる機能は署名が必要。
Google AdMobの暫定コードを本番コードに変更する。・Google AdMobの広告IDを本番用のIDに変更する。Google Admobは、Xcodeでの実装時や評価時は、テスト広告を表示するための評価用IDを利用して実装している。
そのため、本番時には、Google AdMobのサイトから、本番用コードを取得して置き換えが必要。
評価用と本番用で評価ミスをしないように注意すること。

フレームワークのアプリを実装する際に変更する必要がある項目

Xcodeのソースコードをコピーして、新しいアプリケーションを作る時に変更する内容をまとめる。

変更する内容
Appのアイコン画像の変更アプリケーションの画像を用意して対応すること。
画像を自動生成できるサイトがあるため、1つの画像を用意して、必要な画像を用意する。
アプリIDの変更Xcodeのソースコードをコピーして作る場合、新しいアプリケーションをコピー前のアプリケーションのIDを変更すること。
Xcodeを変更した後、App Store Connectに登録する。
例:com.Domain.App name
署名ファイルの変更Apple Pay、レシート、Subscription、アプリ内課金など、アプリに依存するアイテムの変更をする必要がある。IDの名称と、署名ファイルを変更する。
アプリに設定したURLを変更するメニューなどに利用しているアプリから参照するURL(ショップ、HP、Twitterなど)を変更する。
YouTube用のURLも忘れずに変更する。
フェールセーフなど何箇所かURLを設定している箇所があるため、変更漏れなきこと。
ブログ連携のURLを変更することアプリから参照する、リリース用のWordpressブログのURLを変更すること。

Google AdMobのテストコードを本番コードに変更する。

AdsViewフォルダ内のStartAdView.swiftのファイル内のIDをテスト用から本番用に変更する。

評価時に以下を確認する。

  • ・広告にTest modeが表示されないこと。
  • ・正しく広告が表示させること。
  • ・サブスクリプション購入時に広告が表示されないこと。
  • ・起動時広告を見た時に、Adsenseに収益が入ること。

参考にする記事アプリ起動時とテストモード

Internal Server Error
テスト広告を有効にしています  |  iOS  |  Google for Developers
テストを円滑に進めるために、iOS 向けの広告統合でテスト広告を受け取る方法について説明します。

アプリ開発の課題への対応まとめ

購入したコイン機能活用

・コインを購入し、利用した時の通帳へ入れる金額のロジックを実装した時のメモ。

Apple Payを導入した際、リアルな現実で貯めたポイントを使うとするとそれなりに現金や商品、サービスを用意する必要があります。リアル店舗を経営している経営者やショップオーナーであれば、ためたコインを使って割引をするなどとても有意義にサービスを利用することができます。

一方、まだ起業したてや、商品やサービスを立ち上げたばかりの場合は、アプリで購入した商品をアプリ内で消費することで課金をする仕組みが必達で必要となります。

例えば、ゲームであれば、ライフやアイテムを販売し、アプリのゲーム内で利用して頂く。他にもガチャであれば欲しいアイテムが出るまで商品を購入してもらうなど、何らかの工夫をすることで、アプリ内でのサービスや商品を購入してもらうことができます。

さて、以下の事例の場合、アプリ内で利用できるコインを購入する画面になります。

アプリ内で使えるコインをApple Payで購入し、その結果、コインチケットを購入することができます。この画像の場合は、1コイン=1円でわかりやすく表現していますが、1円よりも価値を大きくするのか、小さくするのかは、ユーザに提供するサービス次第ではないかと思います。

例えば、Appleへの手数料を払った後の利益を引いても大きく収益が出る場合は、コインの価値を大きくしても問題ないでしょう。一方、収益が出ない場合は、コインの価値を小さくすることで、ポイントをたまりにくくするが、商品やサービスを利用することの割引をするなど、収支のバランスを考えながらポイントの設計をする必要があります。

ユーザは賢いので、すぐにポイント還元率などで儲けがあるか、損があるかという判断をしてしまいがちですが、あくまでもポイント機能は、このアプリを長く使ってもらうためのツールに過ぎませんので、この点を忘れずにポイント機能を実現してみてください。

さて、この機能を実現するためには、2つの重要なことがあります。

まずは、

ポイントが消えない仕組みにすること。

ポイントの計算を間違えないこと。となります。

当たり前のことですが、やはりプログラミングを使ってありとあらゆる所から関数を使うことになるので、しっかりとポイントの加算、減算については、ミスないようにしましょう。

この機能ができれば、ユーザからお金を払ってアプリのアイテムを購入することができ、また、得られた利益を使ってポイントを自社で作ることができ、ポイントサービスを提供する機能を使わなくても独自のサービスを展開することができ、手数料などを考慮したポイント設計ができるため顧客に多く利益を還元することができるようになります。

ショッピング機能

ショッピング機能を実装して、アプリからApple Payにて支払いをする機能を実装しています。

基本的なショッピング機能ができた後の、課題を解決していきたいと思います。

ショッピングページ

・販売する商品の決定・商品の定義、写真や詳細の内容を表示する。(現在は、8つの商品を仮に設定。)

まず、アプリで扱う基本商品を8つ選び、表示させたいと思います。

本当の店舗であれば、例えば流行りの本の全巻セットなどや、そのお店の通販商品などが候補になることでしょう。

お取り寄せセットなど、3000円から10000円程度の商品をショッピングカートに並べて、ユーザに購入してもらうことを想定しています。購入後、Apple Payで支払いを行い、配送に渡すことになります。

通常、ECサイトを通じて販売すると、販売手数料がかかってしまうので、10000の商品を売ると1000円が手数料で取られてしまいます。確かに有名なところで販売するのは良いのですが、利益が出ずに大手企業に利益を奪われてしまいます。大手が販売手数料を上げると、一気に利益が出なくなってしまうので、独自の販路を持っておくことは必ず必要になるのではないでしょうか?

候補案1:Amazonセラーセントラルでも扱っている商品を取り扱う。

商品を扱う際、信頼のおける場所でなければ怪しがって購入に至りません。例えば同じものでも、有名な店舗から購入するのと、海外サイトから買うのでは、信頼のあるないで購入に至らないものも多くあるでしょう。

今回、取り扱う商品は、将来アプリと並行してセラーセントラルでも扱うことも想定した地域のオリジナル商品を検討したいと思っているのです。

今まで、現地に行かないと買えなかった商品、通販で取り扱ってくれると嬉しいと思われている商品をAmazonセラーセントラルに登録し、並行してiPhoneアプリでも扱えるようにしたいと思います。

候補案2:YouTubeで紹介して欲しくなる商品を取り扱う。

今や、有名な商品であれば説明は不要ですが、新しい商品は動画や企業サイトで調べてから購入されることが多いでしょう。そのため、YouTubeで紹介した時に、欲しいなーと思った時にすぐにアプリから購入できるということを目指したいと思います。

候補案3:楽天ふるさと納税を紹介して、地域の商品を取り扱う。

ふるさと納税が地域貢献のために役立っています。そこで、アプリから楽天アフィリエイトを通じてふるさと納税のサイトに飛ばすことで、地域を好きになってくれた人がふるさと納税をしてくれる姿を目指します。

・同じ商品を選択すると、ショッピングカートから削除するとすべて消えてしまう(一つずつ追加・削除できるように)。

iPhoneアプリでショップ機能を実装するのはとても大切です。なぜならば、ショップ機能を自前で実装できれば、あとはApple Payの手数料だけで、ECサイトに支払う販売手数料は一切かからないからです。

今回、SwiftUIを使った実装をした時に普通に作ってしまうと、既存のショッピングカートでは当たり前の複数個を購入するメニューも作らなければなりません。

ここでは、アプリから商品を選んだあと、任意の個数でデータを削除できるようにしたいとお思います。

・Apple Payの支払いを本番環境として定義する。

Apple Developerアカウントに登録する方法まとめ

App Store Connectを使ってみよう

・商品を販売する場合のユーザの顧客情報の管理方法の確認。

メンバー会員登録機能

地域の貢献のためには、地域を好きになってくれる応援者が必要です。企業であったり、団体であったり、個人であったり色々な方に関わってもらう必要があります。その際に、費用を払ってくれた人や興味を持ってくれた人にメンバーカードを表示させ、愛着を持ってもらう必要があると思います。

そこで、Apple Payを使ったサブスクリプション(継続なしの1年契約)での実装と、Apple Wallet パスサーバーリファレンス実装方法を使って会員証などの集客ツールを作成することを検討しました。

一度、サブスクリプションの機能を実装していましたので、サブスクリプションを使うことで、1年の有効なサブスクリプションを作ることができ、1年間有効な会員カードを作ることができるようになります。

例えば、企業は10000円を払うと会員になる、個人は1000円を払うと会員になるなど、1年間有効なカードを作成することで、町づくりを応援することができるようになります。

https://swiftui.quadkinghd.com/apple-wallet-パスサーバーリファレンス実装方法/

Apple iOS Appで有料の課金アプリを作成する。【サブスクリプション】

App Store Connectを使ってみよう

コメント