Admob広告が出ない件について
タイトルの通り、作ったアプリでAdmob広告が出ない。
リリース後、Admobにアプリを登録して1日たっても出ない。テスト用IDを使ったデバッグ用アプリだと広告が出るので、コードミスではないと思っているが。。。
今の所考えられる原因を列挙する。
- ただ単に時間が表示されるまでに時間がかかる
- コーディングでミスがある
まあ、どっちかだよね。
表示されるまでに時間が掛かると書いたソースとしては、以下ページ。
新しいアプリや広告ユニットに広告が出るまで数日かかる場合がある、とのこと。
コーディングミスの可能性は以下ページが根拠。
今はMobileAdsを初期化した後に、setRequestConfigurationで広告に子供向け指定しているが、どうも先に
setRequestConfigurationしてやらないといけないらしい。
また、Admobにテストデバイスの設定があることに気づく。これを使えば本番アプリでAdmobポリシー違反なく広告のテストできるらしい。知らなかった。
一旦テストデバイスで表示されるかやってみて、ダメならコード修正で対応するかな。。。
開発したアプリがファミリーポリシー要件に引っかかってリジェクトされたので対策した
開発したアプリをGoogle Playでリリース審査まで持っていったところ、以下のメールが届いた。
プライバシーポリシー
あなたのプライバシー ポリシーは、当社のユーザー データポリシーに準拠していません。アプリが機密権限やデータにアクセスしているかどうかに関係なく、アプリのストア掲載情報ページおよびアプリ内でプライバシー ポリシーにリンクする必要があります。 (ユーザーの個人データや機密データにアクセスしないアプリでも、プライバシー ポリシーを提出する必要があります。)
Google様のメールは具体的なアクションを書いてくれないのが辛いところ。
ひとまずやった対策は以下の通り。
・アプリからプライバシーポリシーに飛べる様にする
・Admob広告が子供向け広告表示に限定されるようにする
・アプリからプライバシーポリシーに飛べる様にする
これは届いたメールの内容に合わせて対策したもの。ボタンを押したらプライバシーポリシーのページが開く仕組みを実装した。
「アプリ内でプライバシー ポリシーにリンクする必要があります」
参考サイト様は以下。
ただ、子供向けアプリだと、アプリから外部サイトを開くのはNGみたいな記事もある。
この審査で落ちたら、プライバシーポリシー全文をアプリ内に表示されるように修正する。
・Admob広告が子供向け広告表示に限定されるようにする
ファミリーポリシー遵守は意外と面倒で、対象年齢を全年齢にしている場合、アプリ広告を年齢に応じて制限をかけないといけないらしい。
正攻法だと年齢確認する仕組みを入れて、広告リクエスト時に年齢に応じたフィルタする設定するのだが、年齢確認する仕組みを入れるのが面倒。簡易チェックではダメで、年齢詐称を誘発しない設計でないといけないらしい。
とりあえず広告リクエスト時に子供向けだけになる様に設定して再度リリース審査してみる。
参考サイト様は以下。
今回作ったアプリは子供でも遊べるデザインなので、できれば子供でも気兼ねなく遊べる様にしておきたい。でもそれでリジェクトされ続ける様なら、最終的にはレーティングを上げて出すしかないかな。。。
9/25追記:審査は通って無事リリースされた。
Unityで"Gradle failed to fetch dependencies"と出てAdmobが使えない時
UnityでAdmob設定のために、Assets->External Dependency Manager->Android Resolver->Force resolveしたときに、"Gradle failed to fetch dependencies"なるエラーが出てしまう。
Unity Editor上ではAdmobが動作している様に見えるものの、実機テストするとAdmobが動いていない。
対策としては、Google Mobile Ads->settingのAppIDをAndroidおよびiOS両方埋めて、Player Setting->PlayerのPublishing setting のProject KeystoreとProject keyの設定を埋めておく。
Animatorコンポーネントが有効だとオブジェクトのPositionをスクリプトから変更できない
6月終わり頃からアプリ開発を再開している。
で、昨日1日引っかかったことを備忘録として残す。
2Dキャラクターのモーションをスクリプトから制御しようとしたところ、
動いてくれない。
localpositionにVector3で位置情報をセットしても値が反映されていない。。。というのはわかったものの、どうしてそうなるのか分からず1日くらい悩んだ。
その後、動かそうとしているオブジェクトにAnimatorコンポーネントを付けていたので、試しに無効化したら動いた。
詳しく仕様を理解してないが、Animatorが付いているとそちらが優先されてスクリプトからの位置変更を受け付けない、ということなのだろう。
Synology NAS DS216jにGitサーバ立ててSourcetreeからアクセスできるようにしようとしたら苦労した話 3
忙しくてアプリ開発を放置してた。
最近やる気が出てきてNASの共有フォルダ上に、使い慣れたSVNのリポジトリ作ろうとしていたのだが、windowsからはUpdateもCommitもできるものの、macから出来ない。何故。
調べた結果最近のNASのバージョンだとSVNサーバに対応しておらず、Gitは対応しているとのこと。まじか。
Gitから逃げられないことを知り、仕方なく改めてGitサーバ立て、リポジトリ作成、クローンからのコミットまでやってみた。
やったことは以下の通り。
1.NASにGitサーバを導入
Gitサーバをいつの間にか消したらしい。SVN使おうとした時か?覚えてない笑
以下ブログを参考に導入。
Git用ボリュームは作ったけど、ユーザとユーザグループは作っていない。
あと、エクスプローラから見えなくなる設定もしていない。
2.リポジトリ作成
まずターミナルなどからSSHでログインする。ってみんなサラリと書いてるけど、そのあたり詳しくないからわからん。SSHでログインて何だよ。
とりあえず以下をコマンドプロンプトから打つ。
パスワードを聞かれるのでNAS管理者パスワードを入力する。次に管理者権限取得のため以下を入力。
sudo -i
パスワードを聞かれるので(略
で、作成したGitボリュームに移動する。前々回ハマったcdのコマンドである。
cd /volume1/gitvolume
ようやくリポジトリ作成である。test.gitは任意の文字列で良い。
git init --bare --shared test.git
このコマンド打った後、一発目のリポジトリはmasterが良いみたいなワーニングが出たような気もするが、気にしてはいけない。
前々回のブログでは、参考サイトの影響で書き込みや読み込みの権限をいじってるが、そんなことしない。むしろしないようがいい。
3.PCにGitとSourcetree導入
GitとSourcetreeをダウンロードしてインストールする。
公開鍵だの秘密鍵だのは必要ない。
4.クローン、コミット、プッシュ
作成したリポジトリを、ローカルにクローンする。
リポジトリは以下のパス。
/Volumes/gitvolume/test.git
適当にファイルをローカルで作成してコミットし、プッシュしたところ成功した。
SVNとGitのコマンドだと以下が対応するイメージ。
SVN checkout: clone
SVN update: pull
SVN commit: commit -> push
コミットの後にプッシュがあるのが慣れない。慣れるしかないが。
Synology NAS DS216jにGitサーバ立ててSourcetreeからアクセスできるようにしようとしたら苦労した話 その2
前回の続き。前回はコレ↓
2.GitクライアントPCにGitとSourcetreeを入れる
Git入れるのに参考にしたのは以下記事。
入れること自体はそんなに大変じゃない。
Sourcetreeのインストールは以下を参考にした。
Bitbucketアカウントは作ってない。何に使うか必要性がわからなかった。調べる気もなかった。
結果的に無くても問題ないと思われる。
3.ローカルリポジトリ作成し、リモー トリポジトリにプッシュ出来るようにする
参考にしたのは以下記事。
手順的には以下。
- オプション設定画面で、フルネームとメールアドレスを入力
- ローカルリポジトリの作成
- 保存したいファイルをインデックス追加
- ローカルリポジトリにコミット
- SSH公開鍵と秘密鍵の作成
- 公開鍵をNASに保管
- 秘密鍵をSourcetreeeに設定
- 設定画面でリモートリポジトリを設定
- リモートリポジトリにプッシュ
SSHキーの作成関係は以下を参考にした。
https://nelog.jp/sourcetree-github-settings#SSH%E3%82%AD%E3%83%BC%E3%81%AE%E4%BD%9C%E6%88%90
作成した公開鍵をNASにアップするにはコマンドプロンプトで以下を打つのだが、上手くいかなかった。
scp id_rsa.pub <user-name>@<nas-name or IP address>:
ので、ファイルを直接<user-name>のhomeフォルダ直下にコピーした。ってかこれでええやん。その後、以下コマンドを打つ。
mkdir .ssh
chmod 700 .ssh
cat id_sra.pub >> .ssh/authorized_keys
chmod 600 .ssh/authorized_keys
chmod 755~
.sshとかいうフォルダを作って、そこに置かないといけないようだ。
リモートリポジトリの名称はなんでも良いみたい。パスは以下に設定。
ssh://<user-name>@<nas-name or IP address>:/volume1/gitvolume/<repo-name>
んで、プッシュしてみるがエラー。以下のようなエラー文。
remote error cannot lock ref 'head' unable to create(以下略)
いろいろ調べて、最終的に以下のコマンドをrootで打ち、エラー解消。当然このコマンドを打つ前にはcdで対象のフォルダに降りている。結局のところファイルのパーミッションをガバガバにしてる感あるが、どうせ自分しか使わんしいいかなって。
chmod 777 <repo-name>
その1でリポジトリを作るときに777を与えてしまえばOKかな。
こう書くと、なんとなくサラッと解決した感あるけど実際は結構必死だった。もうSVNにしようかと悩むレベル。
ひとまず使えるようになって良かった。・・・いやホントに。
Synology NAS DS216jにGitサーバ立ててSourcetreeからアクセスできるようにしようとしたら苦労した話 その1
PythonやらUnity(というかC#)のソースやらを管理するために、バージョン管理ツールを使いたい。
会社ではSVNを使っているが、今バージョン管理ツールでググって出てくるのはGitおよびそのクラウドサービスのGithubばっかり。ってかうちの会社、バージョン管理ツールの運用個人任せなんですけど終わってない?
ってわけで、Gitを使ってナウなヤングの仲間入りを果たしたいわけだが、個人の趣味レベルでやるわけだし、Githubに置くのもどうかなって思ってた頃、ファイルストレージとして使ってたSynologyのDS216jがGitサーバになれることが判明。SVNサーバにもなれる。
Gitは基本CUIっぽいけど、会社でTortoise svnに甘やかされた人間が今更CUI操作したくないので、GUI操作できるGitクライアントを使いたい。MacとWinの両方から操作することも考えて、マルチに使えるクライアントが良いが、それに合致するのはSourcetreeというクライアントのようだ。CUIならOS関係ない?知りませんねぇ。。。
ってわけで、ようやくタイトルに繋がったわけだ。やりたいことは以下の通り。
基本的には先人達がやってるので、その通りにすれば出来るわけだけど、この記事はそれでドハマリしたことを書く。忘備録として。
1.DS216jにGitサーバになってもらう
Gitサーバをインストールするだけならなんてことなかった。参考にしたのは以下の記事。
みんな似たようなことやってるんだね。
SynologyのNASは使い勝手のいいGUIがブラウザベースで提供されているので以下は簡単に出来た。
参考にした記事ではGitにアクセスするユーザーグループを作ってるけど、使うの自分だけだから、Gitユーザーグループなんて作らない。
が、肝心のリポジトリの作成はCUIでやらないといけない罠。しかもここでドハマリした。
リポジトリを置くフォルダとして、/gitvolumeというフォルダを作った。WindowsのコマンドプロンプトからSSHでアクセスしてリポジトリを作るが、その際root権限でやる必要がある。これは参考にした記事にもある。で、rootを取るわけだけども、そこから
cd /gitvolume
と打っても移動できなかった。しかもlsコマンド入れても/rootしか表示されないので悩んだが、どうも/volume1以下にすべてのフォルダがあるらしく、
cd /volume1/gitvolume
と入れると移動できた。
参考にした記事ではさも当然のように/volume1がパスに入っているけど、なにこれ仕様なの?これで1日潰したんだけど
移動後、以下のコマンドを打つ。
git init --bare --shared <repo-name>
chmod -R g+w <repo-name>
要はgitリポジトリを作って、それを使用するユーザに権限作ってる。この辺のコマンドは飛ばすと上手くいかない。というかちゃんと打っても上手くいかなかった。
書くの疲れたので分割します。