Lanvillのスマホアプリ開発記

アプリ開発初心者のLanvillが作ったスマホアプリを紹介したりするブログです。

UnityでCocoapodsのインストールに失敗した時の対処

久々にUnityでios向けビルドしようと思ったら、以下エラーに遭遇した。

Failed to install CocoaPods for the current user. 

結論からすると、以下記事の通りで対処できた。

qiita.com

 

以下余談。というかmacへの愚痴。

エラー文を読むと、今入ってるRubyのバージョンが低いとか言われている。Rubyなんざ入れた覚えはない。おそらくPython2と同じくデフォルトでmacに入っているのだろう。そのせいで今回のようないらん手間が掛かるんだよ。。。

Python2にしろRubyにしろ、なんでデフォで入ってるんだろ。余計なお世話だと思う。

Google Play Consoleの罠を乗り越えて

Google Play Consoleでアプリ紹介内容の翻訳サービスがあることに気づく。

早速英語と日本語以外の言語で翻訳を実行、変更の申請をしたが、1つのアプリがリジェクトされた。謎。

リジェクト内容を見てみると、どうもプライバシーポリシーを記載したページに、ブログみたくコメントが残せるのは違反らしい。

リジェクト内容

つまりこのブログに載せてるプライバシーポリシーはNGということに。

要はコメントが入れられる様になっていなければOKなので、当ブログのコメントは無しにした。このおかげかは分からないが、別のアプリは変更が承認されていた。

 

4年前くらいからこのブログにプライバシーポリシー載せてたんだけどね。まぁ神のお言葉は絶対だから仕方ないね。

Admob広告が出ない件について

タイトルの通り、作ったアプリでAdmob広告が出ない。

リリース後、Admobにアプリを登録して1日たっても出ない。テスト用IDを使ったデバッグ用アプリだと広告が出るので、コードミスではないと思っているが。。。

 

今の所考えられる原因を列挙する。

  • ただ単に時間が表示されるまでに時間がかかる
  • コーディングでミスがある

まあ、どっちかだよね。

表示されるまでに時間が掛かると書いたソースとしては、以下ページ。

新しいアプリや広告ユニットに広告が出るまで数日かかる場合がある、とのこと。

support.google.com

 

コーディングミスの可能性は以下ページが根拠。

今はMobileAdsを初期化した後に、setRequestConfigurationで広告に子供向け指定しているが、どうも先にsetRequestConfigurationしてやらないといけないらしい。

 

stackoverflow.com

github.com

 

また、Admobにテストデバイスの設定があることに気づく。これを使えば本番アプリでAdmobポリシー違反なく広告のテストできるらしい。知らなかった。

support.google.com

 

一旦テストデバイスで表示されるかやってみて、ダメならコード修正で対応するかな。。。

開発したアプリがファミリーポリシー要件に引っかかってリジェクトされたので対策した

開発したアプリをGoogle Playでリリース審査まで持っていったところ、以下のメールが届いた。

 

プライバシーポリシー
あなたのプライバシー ポリシーは、当社のユーザー データポリシーに準拠していません。アプリが機密権限やデータにアクセスしているかどうかに関係なく、アプリのストア掲載情報ページおよびアプリ内でプライバシー ポリシーにリンクする必要があります。 (ユーザーの個人データや機密データにアクセスしないアプリでも、プライバシー ポリシーを提出する必要があります。)

 

Google様のメールは具体的なアクションを書いてくれないのが辛いところ。

ひとまずやった対策は以下の通り。

・アプリからプライバシーポリシーに飛べる様にする

・Admob広告が子供向け広告表示に限定されるようにする

 

・アプリからプライバシーポリシーに飛べる様にする

これは届いたメールの内容に合わせて対策したもの。ボタンを押したらプライバシーポリシーのページが開く仕組みを実装した。

「アプリ内でプライバシー ポリシーにリンクする必要があります」

 

参考サイト様は以下。

kuneoresearch.com

 

ただ、子供向けアプリだと、アプリから外部サイトを開くのはNGみたいな記事もある。

minpro.net

 

この審査で落ちたら、プライバシーポリシー全文をアプリ内に表示されるように修正する。

 

・Admob広告が子供向け広告表示に限定されるようにする

ファミリーポリシー遵守は意外と面倒で、対象年齢を全年齢にしている場合、アプリ広告を年齢に応じて制限をかけないといけないらしい。

正攻法だと年齢確認する仕組みを入れて、広告リクエスト時に年齢に応じたフィルタする設定するのだが、年齢確認する仕組みを入れるのが面倒。簡易チェックではダメで、年齢詐称を誘発しない設計でないといけないらしい。

とりあえず広告リクエスト時に子供向けだけになる様に設定して再度リリース審査してみる。

参考サイト様は以下。

www.zkn0hr.com

developers.google.com

 

今回作ったアプリは子供でも遊べるデザインなので、できれば子供でも気兼ねなく遊べる様にしておきたい。でもそれでリジェクトされ続ける様なら、最終的にはレーティングを上げて出すしかないかな。。。

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サーバを導入
  2. リポジトリ作成
  3. PCにGitとSourcetree導入
  4. クローン、コミット、プッシュ

 

1.NASにGitサーバを導入

Gitサーバをいつの間にか消したらしい。SVN使おうとした時か?覚えてない笑

以下ブログを参考に導入。

everlup.com

Git用ボリュームは作ったけど、ユーザとユーザグループは作っていない。

あと、エクスプローラから見えなくなる設定もしていない。

 

2.リポジトリ作成

まずターミナルなどからSSHでログインする。ってみんなサラリと書いてるけど、そのあたり詳しくないからわからん。SSHでログインて何だよ。

とりあえず以下をコマンドプロンプトから打つ。

 

ssh adminname@(NASのIPまたは名前)

 

パスワードを聞かれるので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

コミットの後にプッシュがあるのが慣れない。慣れるしかないが。