そういうのがいいブログ

アプリ個人開発 まるブログ

アプリ開発覚え書き

【App Store Connect】税務情報 W-8BEN更新した方法

はじめに

App Store Coonectで申請済みW-8BENの税務情報を更新した方法になります。
こちらは有料アプリやアプリ内課金を提供する場合に申請しているはずです。

有効期限が存在しており、申請した3年後の年末が期限になります。
私は2021年に申請していたため2024年12月31日が期限でした。

期限が近づいてきたため更新をかけたメモになります。

対応は自己責任でお願いいたします。

Google Adsenseでの税務情報 更新は以下で申請しています。
marumaro7.hatenablog.com

納税フォームの送信日確認

納税フォームの場所は以下です。
App Store Connect
→ビジネス



→納税フォーム
こちらに初回申請時の送信日が書いてあるはずです。
3年後の年末が期限ですので期限内に申請が必要になってきます。

2021年に送信しているなら2024年12月31日が期限、
2022年に送信しているなら2025年12月31日が期限です。

注意:
初回の送信日であり、更新をかけていた場合はわかりません。
更新した際は送信日を自己管理しておく必要があります。


更新方法

1.問い合わせ

「U.S. Form W-8BEN」をクリックしてもGoogleのように更新するボタンはありません。

そのため、画面上部の
「このフォームに変更を加えるには、お問合せ。」から連絡する必要があります。



「お問合せ」のボタンを押すと以下のページに飛びます。
こちらで問い合わせ内容を入力します。


入力内容

Subject:「Tax Setup」を選択
Category:「Tax forms」を選択
Message: I’ve heard that W-8BEN form must be renewed every 3 years. How can I renew the form in Apple Connect? I couldn’t find any actionable UI except this contact form.

Messageの日本語訳:
W-8BEN フォームは 3 年ごとに更新する必要があると聞きました。Apple Connect でフォームを更新するにはどうすればいいですか? この連絡フォーム以外に実用的な UI は見つかりませんでした。

 



送信後、画像ように表示され
3営業日以内にメールを送るよと表示されます。


メール到着

3日後、次のメールが届きました。

日本語訳:
以下の内容を今後のやり取りのメールに含めてください。

Case-ID: XXXXXXX

こんにちは、

以下に、米国の税務書類の選択、ステータス、または税務IDのみを更新するための指示を記載します:

提供された更新フォームの住所が、開発者プログラムの法的実体の住所と一致しない場合、税務情報は更新されません。

名前と住所の更新は、更新された米国の税務書類を提出する前にConnectアカウントに反映されている必要があります。住所の更新のために税務書類を提出した場合、それは拒否されます。

法的実体の住所を更新するために税務書類を提出しないでください。

指示: 税務情報のみを更新するには、IRS.govからダウンロードできる適切なForm W-8またはForm W-9を記入し、署名してください。デジタルで提出するためにフォームを完成させてください:

ファイル名は、このメールの件名に記載されている7桁のケースID番号を付けてください。

その後、以下のリンクから税務チームにファイルを安全にアップロードできます:

W-9フォーム: [Form W-9 Submission]
W-8フォーム: [Form W-8 Submission]

上記のリンクをクリックし、更新された税務書類をボックスにドラッグしてください。次に「UPLOAD」をクリックし、このメールに返信して提出したことをお知らせください。

—このメールに返信しない場合、アカウントに税務書類の更新が反映されません。—

注意: 税務書類の更新は、Connectアカウントには反映されません。これは、あなたの画面に表示される情報が静的であり、バックエンドシステムで行われた名前、住所、または項目の変更を反映していないためです。

ありがとうございます。

 Finance Support Apple Media Services

対象のフォームをダウンロードしてフォームをアップロード後、
メールに返信してと書いてありますので対応していきます。


2.対応内容

対応する内容は次の5ステップです。
1.W-8BENのPDFフォームをダウンロードする
2.W-8BENのフォームに記入
3.ファイルの名前を変更
4.ファイルをアップロード
5.メール返信


1.W-8BENのPDFフォームをダウンロードする

アメリカ合衆国内国歳入庁(IRS)の公式サイトから
W-8BENのフォームをダウンロードしていきます。

www.irs.gov


ページ上部の「Forms & Instructions」タブをクリック



「List all current forms & instructions」をクリック



検索ウインドウに「Form W-8BEN」を入力



「Form W-8BEN」をクリックしてダウンロードします。


このようなファイルがダウンロードできます。


2.W-8BENのフォームに記入

ダウンロードしたフォームに記入します。

入力できるのは画像の青色部です。


今回私が入力したのは以下の部分です。
基本的にはApp Store Connect>ビジネス>U.S. From W-8BEN に
表示されている情報を記入しました。


PartⅠ、PartⅡ、PartⅢに分かれていますのでそれぞれ記入した内容をパート毎に説明します。

PartⅠ

名前、住所、国、マイナンバー、生年月日を記入しました。

「4.Mailing address (if different from above)」については
同じ住所を使用する場合は記入不要なため未記入で進めています。


PartⅡ

App Store Connectで表示されていた内容をそのまま記入しました。
・「Japan」を記入
・「Income from the sale of applications」を記入


PartⅢ

・右の方にこの書類の記入日を書きます。
・下段(Print name of signerと書いてある欄)に名前を記入します。

記入後、一度このファイルを紙に印刷して
「Signature of beneficial owner (or individual authorized to sign for beneficial owner)」 と書いてある欄に手書きで名前を記入します。(例:Taro Yamada)

記入後、スキャンしてPCに取り込んで完成です。
(印刷して手書きをせずともデジタル署名というものを使えば対応できるようです。)


3.ファイルの名前を変更

ファイル名はAppleからのメールに記載のCase-ID(7桁)へ変更します。

例:8858199


4.ファイルをアップロード

Appleからのメールに記載の「Form W-8 Submission」のリンクをクリックして
ファイルをアップロード、メールアドレス、Case-IDを入力して送信します。


5.メール返信

ファイルのアップロードが完了したことをメール返信します。 以下の内容で返信しました。

Dear Apple Media Services Finance Support,

I have completed and uploaded the W-8BEN form as per the instructions provided in your email. Please let me know if any further action is required on my part.

Thank you for your assistance.

Best regards,
[自分の名前]

3.完了通知

12日後以下の完了メールが届きました。

Thank you for your email. I have updated your tax information to match your W8. Please note, you will not see these updates within iTunes Connect as the tax info page is static and will always display what you originally entered.

日本語訳

メールをありがとうございます。W8 と一致するように税務情報を更新しました。税務情報ページは静的であり、最初に入力した内容が常に表示されるため、iTunes Connect 内でこれらの更新は表示されません。

App Store Connectのページには反映されないということで
自分で更新年の管理をする必要がありますね。

このメールが届いたら完了です!


おわりに

今回、完了まで半月ほどかかりました。

年度末は混み合いそうなので有効期限の最終年になったら
早めにやっておきたいところです。

なにか参考になりましたら幸いです。



Kindle本だしてます〜。
marumaro7.hatenablog.com

参考

非常に参考になりました。 blog.ottijp.com

書き方詳細 lifehack001.com

ParⅢ参考 phoenixdale.com

【Unity】多言語化パッケージ Localization 使用する文字を重複無しで簡単に抜き出す方法

はじめに

言語化パッケージのLocalizationを使用し
簡単に使用する文字を抜き出す方法のメモです。

TextMeshProを使用する際、使用する文字をフォントアセットへ登録する必要があります。
重複する文字を登録するのは容量の無駄になるためこれまで下記のサイト様にて
簡単に重複する文字を抜き出していました。

tools.ikunaga.net

Localizationパッケージを使用しているならもっと簡単な方法があるため残しておきます。

手順

Localizationパッケージを使用した文字抽出の手順です。

テキストのテーブルメニューを開きます。
 Unityエディタ上部の「Window」
 →「Asset Management」
 →「Localization Tables」


「Localization Tables」が開いたら
右上の縦に点が3つ並んでいるのボタンを押します。
→「Export」→「Character Set」にて
対応する言語の文字を抜き出すウインドウが表示されます。


あとは対象としたい言語をチェックして「Export Selected」を押すことで
チェックした言語で使用している文字がまとめて出力されます。

中国語で実施してみると・・・


このように使用している重複無しの文字が出力されました。

追加で登録する文字

重複しない文字を抜き出せたといって安心してはいけません。
下記の文字も併せて登録しておきましょう。

基本で入れたい文字

数字やアルファベットはテキストをスクリプトから変更する可能性があるため
下記は基本で入れておきたいところ

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

課金商品の通貨記号

課金商品があり、その金額をストア側から取得する場合、通貨記号も併せて表示されます。
フォントに通貨記号を登録していないと課金における重要な情報が
表示されなくなってしまうため忘れずに追加登録しておきましょう。


日本語:「¥」もしくは「円」
中国語:「元」
韓国語:「₩」(ウォン)もしくは「원」(ウォン)


言語別に個別に設定するのが面倒な場合は下記を追加しておけば 対応できると考えています。

¥$€£₪₹₸฿č₺₦₱₫ł₽₩원

追加したい文字をまとめ

追加で登録したい文字は以下になります

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789
!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
¥$€£₪₹₸฿č₺₦₱₫ł₽₩원


後から追加が面倒なら上記の文字を最初からTextTableに入れてしまえば良さそうですね


こちらを実行中に表示しようとするとエラーが発生するため
文字抽出が終わったら削除等しておいた方がよさそうです。

おわりに

Localizationパッケージは素晴らしい


marumaro7.hatenablog.com

【Unity】Android実機起動時 エラー無しの処理落ちに対応した方法

要件

Unityバージョン 2022.3.16f1
Google Mobile Ads SDK v9.1.0
Unity Adsメディエーションアダプター 3.12.0
PlayFabSDK 2.183.231124
In App Purchasing(Unity IAP) 4.11.0

検証端末
・Pixel4a
・Pixel8a

はじめに

Androidアプリ開発において実機確認を行ったところ、
起動直後に10回中5回は処理が処理が進まなくなったり
アプリが落ちてしまったりするという事案が発生。

Android Logcatで確認してもエラーは発生していないという状況でした。

解決した方法をメモしておきます。

解決した方法

方法としては、
「課金商品の読込み」と「広告の初期化」のタイミングをそれぞれ遅延させて実行
することで解決しました。

遅延させる時間は以下で設定しました。
「課金商品の読込み」で1.5秒
「広告の初期化」は3.5秒(もう少し短くしても良いかも?)

対応後にPixel8aで20回ほどテストしたところ、
今回の不具合は発生しないことを確認しています。

原因は?

原因としては、一気に外部から情報をとってくる処理が実行されたことで
高負荷または処理が競合していたと推測しています。

画像の読み込みを起動時に行っていたため、それも関係しているかもしれません。

おわりに

一応iPhoneSE(第三世代)でも確認しましたが問題ありませんでした。

起動時の負荷を散らすのは心がけたいですね。

なにか得るものがありましたら幸いです。

marumaro7.hatenablog.com

【Unity】iOSの実機でリワード広告時にアプリの動作を止める方法

要件

Unityバージョン 2022.3.16f1
Google Mobile Ads SDK v9.1.0

はじめに

iOSの実機にてリワード広告を再生した際、
アプリが一時停止せずに動き続けていることに気がつきました。(今更)

現在開発中のアプリ内ではアイテム使用時にタイマーを使用しており、
動画広告再生中にタイマーが進行してしまうため動画再生中は動作を止める必要がありました。

今回、対応した内容を紹介します。

対応方法

方法は簡単でAdMob広告のスクリプトのスタート関数に以下を呼び出すだけです。

#if UNITY_IOS
    //iOSでフルスクリーン広告が表示されている間、Unityアプリを一時停止 (デフォルト設定では停止しないため)
    MobileAds.SetiOSAppPauseOnBackground(true);
#endif


上記を実行することでアプリが停止したままになるという情報があったため
リワード広告が表示終了した時に実行された時に以下を呼び出す。

#if UNITY_IOS
            //アプリ内時間が停止していることがあるようなので、再開する
            Time.timeScale = 1;
#endif

上記のコード抜きで3回ほど広告を再生してみましたが
アプリが停止するようなことはありませんでした。
一応いれておきます。

Udemy講座

リワード広告が表示終了した時に実行するスクリプト
広告実装講座で公開しています。

marumaro7.hatenablog.com

参考

note.com

developers.google.com

【iOS】 App Store Connectで事前登録(予約注文)設定をする方法

はじめに

2024年7月29日における
App Store Connectで事前登録設定したメモです。

リリース経験済みの方向けに書きます。


Androidはこちら↓
marumaro7.hatenablog.com

事前登録方法

公式の手順を参考にして進めました。 developer.apple.com

特に、上記ページの「予約注文としてAppを初公開」を参考にしています。

リリース設定

こちらは説明書に書いてありませんでしたが、
リリースされてしまうと困るため
画面左上の「1.0 提出準備中」から手動リリース設定にして進めました。

配信設定

サイドバーの「価格および配信状況」をクリックし、
「配信状況の設定」にて設定を進めます。


→「予約注文として公開」を選択 →次へ


リリース日を設定します。
注意
ここで入力する日付はApp Store上に予定日として表示されるだけの情報です。
実際にこの日に自動でリリースされるわけではありません。

<2024年8月3日追記>
リリース日を設定した日に強制的に公開されるようです。
せっき〜様(X:@seki_seki_seki)情報ありがとうございました。

→次へ


→配信国を設定
 (私の場合はフランスと中国へは配信しないためチェックを外しています。)
→次へ


→確認


左上の「価格および配信状況」をクリックすると、

アプリの配信状況が設定されていることが確認できます。


アプリ審査

あとは通常の審査と同様に各項目を設定して審査に提出します。

予約注文を開始

審査が終わったら「このバージョンをリリース」ボタンを押します。
文字的にストアでインストールできてしまう状態でリリースされるような
感覚を受けますが大丈夫です。


ちゃんと予約注文としてリリースしますか?と聞いてくれるので
「このバージョンをリリース」を押します。

以上で予約注文の設定は完了です。

確認

配信確認

「価格および配信状況」→アプリの配信状況の「管理」を押すことで
予約注文状態を確認できます。

「このバージョンをリリース」を押してから10分くらいすると
各国で予約注文状態であることが確認できます。
アフガニスタンではアプリ販売不可となっていました。)

ストアページ確認

予約注文を開始してから半日〜1日ほどするとApp Storeにてアプリのページが確認できます。

App Store Connect
→アプリ情報
App Storeで表示

事前登録数

事前登録数はApp Store Connect上で確認が可能です。 App Store Connect
→トレンド
→予約注文数

予約注文期間中のアップデート

予約注文期間中のアップデートは可能です。
通常のアップデート手順で審査に出し、審査完了後「このバージョンをリリース」を押します。


App StoreiOSアプリを予約注文としてリリースしますか?」ウインドウが出るので
「このバージョンをリリース」を押して完了です。

即時リリース<追記>

即時リリースの方法です。

→「価格および配信状況」
→「管理」




→「編集」



→リリースしたい国を選択
→「次へ」



→「アプリをすぐにカスタマーにリリースする」にチェック
→「次へ」こちらを押すとリリースされます。


処理中になります。これで完了です。

おわりに

思っていたよりも簡単に設定できますね。

何かお役に立ちましたら幸いです。

<追記>
今回2024/08/22にリリース日指定をしており、
8/22午前0時過ぎくらいに即時リリース設定をしたわけですが、
なぜか8/21 23時からインストール可能になっていました。

厳密にリリース日を決めたい場合は+1日設定で自分でリリースした方が良さそうです。

プログラム本書いてます

marumaro7.hatenablog.com

参考

kan-kikuchi.hatenablog.com

【Android】 Google Play Consoleで事前登録設定をする方法

はじめに

2024年7月29日における
Google Play Consoleで事前登録設定した内容を残しておきます。

リリース経験済みの方向けに書きます。


iOSはこちら↓

marumaro7.hatenablog.com

前準備

Google Play Console上で対象のアプリ項目を開いた後、

ダッシュボード


→アプリのセットアップに提示されている内容を全て入力しておきます。


事前登録設定

内容は大きく3ステップです。
1.クローズドテスト-事前登録で審査へ提出
2.審査完了を待つ
3.事前登録設定後-審査へ提出

計2回の審査が必要です。

1.クローズドテスト-事前登録で審査へ提出

ダッシュボードをクリックすると事前登録におけるアプリ審査までのタスクが表示されています。
こちらを上から順番に設定していきます。



「App Bundle または APKをアップロードする」をクリック


事前登録の項目に移動します。
「クローズドテストに移動」をクリック


トラックを作成


適当にトラックの名前を入力(今回は事前登録という名前にしました。)


新しいリリースを作成(国を選択から実施した方がスムーズかもしれません。)


アプリデータ(aabファイル)をアップロード


次へ


信国等が設定できていないというエラーが表示されるため設定します。
→クローズドテスト


→クローズドテスト-事前登録
→トラックの管理


残りのタスクが表示されますので上から順番に実施していきます。


配信する国/地域を選択


テスターを設定します。
誰かにテストしてもらうわけではないため
自分のアドレスを指定しておきます。


「リリースをプレビューして確認する」をクリック


「保存」をクリック


公開の概要に移動します。


公開の概要のページに遷移します。
念のため、「管理対象の公開:オン」にして進めました。
→○件の変更を審査に送信


確認ウインドウが表示されます。
→変更を審査に送信



2.審査完了を待つ

審査送信後、下記を確認すると審査中になっているはずです。
→「クローズドテスト - 事前登録」
→「トラックを管理」

審査完了を待ちます。



3.事前登録設定

審査が完了したら事前登録メニューを開き
事前登録開始へ向けて設定をしていきます。


やることは4つです。
1.対象のアプリデータを選択
2.事前登録の対象国を選択
3.事前登録特典の有無を選択
4.審査へ提出


1.対象のアプリデータを選択

「ライブラリから追加」をクリックし対象のアプリデータを選択


追加できたら保存を押します。


2.事前登録の対象国を選択

「国/地域」タブを選択 →「国/地域を編集」から設定します。


事前登録の対象としたい国を設定後、保存します。


3.事前登録特典の有無を選択

「特典」タブを選択
→特典の有無を設定
→保存


以上3点の設定が完了すると「事前登録を開始」が押せるようになります。


「事前登録を開始」を押すと次のウインドウが表示されますので「保存」を押し進みます。


その後、自動的に公開の概要に移動します。
変更内容を審査に送信して待ちます。
→「○件の変更を審査に送信」
→「変更を審査に送信」

審査完了後 公開することで事前登録が開始されます。

確認

アプリページは半日〜1日経つと見えるようになっていました。

アプリページへのリンクは以下になります。

https://play.google.com/store/apps/details?id=事前登録したアプリID

※"事前登録したアプリID"にご自身のアプリIDを入力してください
 Google Play Condoleのアプリ一覧でアプリタイトルの下に書いてある文字列です。

テスト端末でアプリページへ行ってもインストールするボタンで表示されてしまうため 家族や友達などの端末で確認すると良いでしょう。

事前登録数は「リリースの概要」から確認可能です。


製品版のリリース<追記>

Androidでは事前登録をしたからといって所定の日に自動でリリースされるわけではありません。
製品版としてリリース設定を行う必要があります。


製品版リリースにあたり再度審査があるため余裕を持って申請した方が良いでしょう。

審査提出時、審査完了しても製品版がリリースされないように
「管理対象の公開」設定はオン にて進めます。


審査提出


あとは、審査日までに審査が終わった状態でリリース日まで待ち、
リリース日に公開を開始すれば完了です。

注意:製品版審査はお早めに<追記>

製品版の審査の方が事前登録の審査より厳しいです。
製品版で審査を提出したところ、ポリシー違反で落とされてしまいました。

早い段階で製品版の審査を進めた方が良いでしょう。

おわりに

事前登録設定において「変更を公開」というボタン表示が
インストールできる状態を指す公開ではないのかと不安になりますね。

製品版やオープンテストでアプリデータをアップロードしていない限り
ストア上でインストールできる状態にはならなさそうですね。

なにか得るものがありましたら幸いです。

プログラム本書いてます

marumaro7.hatenablog.com

参考

kan-kikuchi.hatenablog.com

【Unity】Google Mobile Ads v8.6.0→v9.1.0に上げた備忘録 AdMob

要件

macOS:Sonoma 14.5
Unityバージョン:2022.3.16f1
Google Mobile Ads:v9.1.0
Xcode:15.4
テスト端末AndroidOS:14
テスト端末iOS:16.6.1

はじめに

Google Mobile Ads v8.6.0→v9.1.0に上げた備忘録です。

プラットフォームはAndroidに切り替えた状態で行いました。

v8.6.0では取り込み後、以下の設定を行い、
アセット > External Dependency Manager > Android Resolver > Resolve
リリース前のプロジェクトでテスト端末でのみ広告動作を確認している状態で実施しています。

v8.6.0のファイルを削除

一旦Google Mobile Ads:v8.6.0のファイルを
アセットのウインドウにドラッグアンドドロップして

v8.6.0のファイルを把握します。

(取り込めていないファイルがありましたが気にせず進めます)

対象のファイルのみを削除します。
Plugin>Androidのフォルダ内には他のファイルが入っているかもしれません。

私の場合はファイルがたくさん入っていました。

対象ファイルを消した後の画像

 

v9.1.0のファイルを取り込み

Google Mobile Ads:v9.1.0を取り込みます。


取り込み後、多言語化で設定していた言語テーブルが見つからないみたいなエラーが発生。
念のため取り込みが完了できているか確認したところ、
GoogleMobileAdsPlugin.androidlibフォルダ以下が入っていない。

これはv8.6.0の取り込み状況と同一なので取り込まずに進めました。

取り込み後の処理

ここからは公式を参照して進めました。

developers.google.com


外部依存関係を含める

2項目にチェックを入れるだけです。
・カスタム Gradle メインテンプレート
・カスタム Gradle プロパティテンプレート

ファイル
→ビルド設定
→プレイヤー設定
→項目:公開設定
→項目:ビルド
(プラットフォームはAndroid)

チェック後

Resolve

公式サイトでは以下の手順で「Resolve」すると書いてあります。

アセット
→External Dependency Manager
Android Resolver
→Resolve

しかし、「External Dependency Manager」の項目がなかったためPCを再起動しました。

「External Dependency Manager」の項目がない


再起動後「External Dependency Manager」が現れました。(一安心)
あらためて以下の手順で「Resolve」します。

アセット
→External Dependency Manager
Android Resolver
→Resolve


完了後、「OK」

アプリIDの入力

アプリIDの設定が消えてしまったので設定します。

以下で対象のウインドウを開きます。
アセット
Google Mobile Ads
→Settings

確認

AndroidiOSのプラットフォームにて実機ビルドができ、広告が表示されるかを確認

Android

ビルド問題なし
広告表示問題なし(リワード広告のみ)

iOS

設定確認

アセット
→External Dependency Manager
iOS Resolver
→設定


Cocoapods Integrationが
Xcode Project - Add Cocoapods to the Xcode project」
になっていることを確認してビルド


結果:ビルドエラー

Unity上で以下のエラーを吐く
(Xcodeのファイルは生成されるがXcodeでもビルドできない)

iOS framework addition failed due to a CocoaPods installation failure. This will will likely result in an non-functional Xcode project.

After the failure, "pod repo update" was executed and failed. "pod install" was then attempted again, and still failed. This may be due to a broken CocoaPods installation. See: https://guides.cocoapods.org/using/troubleshooting.html for potential solutions.

pod install output:

Analyzing dependencies [!] Google-Mobile-Ads-SDK requires CocoaPods version >= 1.12.0, which is not satisfied by your current version, 1.11.3.

エラー内容はCocoaPods バージョンが 1.12.0 が必要ですが
現在のバージョンは 1.11.3ということでした。

ということでCocoaPodsをバージョンアップします。

CocoaPodsバージョンアップ

PCを再起動してから以下の内容を実施しました。 marumaro7.hatenablog.com


バージョンアップの際、エラーが出たので以下で対応しています。

marumaro7.hatenablog.com

バージョンアップ後はビルド、広告表示(リワード広告のみ)に問題ないことを確認しました。

おわりに

CocoaPodsバージョンアップでのエラーは焦りましたが
問題なく動いてほっとしました。

なにか参考になれば幸いです。

Unity本を出版しました!

スクリプトの基礎固めしたい方はぜひ!
現在、kindle unlimitedで読み放題設定中です。

marumaro7.hatenablog.com