2021年03月24日

[Unity - iOS] AdMobバナー広告で「SDK tried to perform a networking task before being initialized」となる時の対処法

Google Mobile Ads Unity Plugin v5.4.0 を使っているときに、AdMobバナー広告のイベント(HandleOnAdFailedToLoad)で、実機で実行したときに

SDK tried to perform a networking task before being initialized.

というエラーメッセージが出た。

原因は、先の記事「[Unity - iOS] AdMobプラグインを使ったときにビルドしても「.xcworkspace」が出力されないときの対処法」にて、「External Dependency Manager」のバージョンを
v1.2.161 -> v1.2.164
に上げてしまったことが原因だった。
v1.2.164->v1.2.163
にバージョンを下げたことで広告が表示されるようになったので、手順をメモ。


手順

(1) Packages 内の「External Dependency Manager」のバージョンを確認
AdMobのプラグインでは「v1.2.161」だったけど、最新の「v1.2.164」に上げた状態になっていた。

2021-03-24_01.png

(2) Package Managerを使ってバージョンを「v1.2.163」に戻す

先に記事にてGoogleのレジストリを登録していたので、「My Registories」を選択。

2021-03-24_02.png

「External Dependency Manager」の「v1.2.163」を選択し、「Update to 1.2.163」を押して実行する。

2021-03-24_03.png

(3) Package内を確認。

ちゃんとバージョンがv1.2.163に変わったことを確認。

2021-03-24_04.png

これで広告が表示された。
何でもかんでも最新版がいいとは限らないんだなー。
posted by be-style at 00:09| Comment(0) | Unity

2021年03月23日

[Unity - iOS] AdMobプラグインを使ったときにビルドしても「.xcworkspace」が出力されないときの対処法

AdMobプラグイン(v5.4.0)を導入してビルドしたとき、「.xcworkspace」が出力されずに困ったときがあったので、メモ。


環境

・Unity2020.3.0f1
・XCode12.4
AdMobプラグイン for Unity v5.4.0


目指す形は、「iOS Resolver Settings」というメニューから、「Xcode Workspace - Add Cocoapods to Xcode workspace」を設定すること(下図)。

2021-03-22_10.png


事前チェック

Unityメニュー > Assets > External Dependency Manager > iOS Resolver
が存在しないことを確認。
もしこのメニューが存在するなら、以下の導入手順は不要です。
上図にある「Xcode Workspace - Add Cocoapods to Xcode workspace」が設定できていれば問題解決です。

2021-03-22_07.png


External Dependency Manager 導入手順

(1) Packages に「External Dependency Manager」が入ってないことを確認。

2021-03-22_01.png

(2) AdMobプラグインからインポートする
AdMobプラグイン for Unity v5.4.0から「GoogleMobileAds-v5.4.0.unitypackage」をダウンロードして、「External Dependency Manager」をUnityプロジェクトにインポートする。

2021-03-22_02.png

(3) Assetの内容を確認
すると、「External Dependency Manager」がAssets配下にインポートされます。

2021-03-22_03.png

(4) Unityが依存関係を解決してくれる
(3)が終わると、自動で「Package Manager Resolver」が立ち上がるので、何も考えずに「Add Selected Register」を選択。

2021-03-22_04.png

(5) 「External Dependency Manager」をPackageに移す
(4)が終わると、「Migrating Packages」が立ち上がり、バージョンを「v1.2.161->v1.2.164」に上げると言われるので、何も考えずに「Apply」を押す。
※(4)の操作が、AdMob広告が表示されなくなる原因になるとは思ってもいなかった、
※v1.2.164ではなくv1.2.163だと問題なかった。そのときの対応は別記事にて。


2021-03-22_05.png

すると、 「External Dependency Manager」をPackageに移ったことが確認できる。

2021-03-22_06.png

(7) iOS Resolverを立ち上げる
Unityメニュー > Assets > External Dependency Manager > iOS Resolver > Settings
というメニューが出来ているので、選択する。

2021-03-22_09.png

(8) ビルド時に「.xcworkspace」が出力されるように設定する

2021-03-22_10.png

これで、iOS用にビルドしたときに「.xcworkspace」が出力されるようになった。
気づくのに苦労した。。。


Package Mangerから「External Dependency Manager」を入れる方法

上記はAdMobプラグインを使った方法だったけど、Package Managerを使って入れることも出来た。
Edit > Project Settings > 左メニューのPackage Manager を選択。

NameGame Package Registry by Google
URLhttps://unityregistry-pa.googleapis.com
Scope(s)com.google

を入力して、Applyボタンを押す。

2021-03-22_11.png

Window > Package Manager にて、レジストリを「My Registories」にすると、先ほど設定したGoogleのレジストリが表示される。

2021-03-22_12.png

ここから、「External Dependency Manager」をインストールすることができた。

2021-03-22_08.png

_/_/_/_/_/_/ 注意! _/_/_/_/_/_/
Package Managerからインストールする際、上記(3)の状態のように「Assets」内にも「External Dependency Manager」があると重複してしまいPackageManagerがおかしくなる。
必ず「Assets」内の「External Dependency Manager」を先に削除しておくこと。
posted by be-style at 23:49| Comment(0) | Unity

2021年03月01日

[iOS]100マス計算(iOS)をアップデートしました

iOS版の100マス計算をアップデートしました。
新たに「分析」が追加されました。

20210301.jpg

各問題の正答率と平均回答時間が表示されるので、間違えやすい箇所を確認しやすくなりました。

App Store:
https://apps.apple.com/jp/app/id534131439
posted by be-style at 16:29| Comment(0) | Release

2021年02月21日

[Unity] アプリ内課金(Android)で必要なGoogle Play Console内のライセンスキーの場所

UnityでAndroidのアプリ内課金を実装しようとして、In App Purchase を使うときに、アプリのライセンスキーが必要になります。

Unityの注意書きでは、
Google Play Console の「サービスとAPI」に載っているとあるのですが、最近Google Play Console がUIを改めたので、サービスとAPIのメニューがなくなりました。
結構探したので、メモ。

トップ画面から各アプリのページに入り、左メニューの「収益化のセットアップ」を選ぶと、そこにライセンスキーがあります。

スクリーンショット 2021-02-21.png

これを見つけるまでに手間取りました。。。
posted by be-style at 09:22| Comment(0) | Unity

2021年02月13日

[Unity] Visual Studio CodeでC#のメソッド一覧が表示されない(No editor symbols)ときの対処法

Visual Studio Code(以降、VSC)の便利な機能に、メソッドや変数一覧を表示する機能があります。

環境:
Unity 2020.2.2f1
MacOS Catalina 10.15.7

Macなので、VSCの画面にて、[command] + [Shift] + [o] を押すと画面上に「@」と入力された状態の入力蘭が表示され、メソッド等の一覧が表示されます。
しかし、そうはなりませんでした。

スクリーンショット 2021-02-12_1.png

エディタには何やら警告が表示されているので、「Show Output」を押してログを確認してみました。

スクリーンショット 2021-02-12_2.png



[warn]: OmniSharp.MSBuild.ProjectManager
Failed to load project file '/Users/Shared/Unity/AppName/Assembly-CSharp.csproj'.
/Users/Shared/Unity/AppName/Assembly-CSharp.csproj
/Users/hogehoge/.vscode/extensions/ms-dotnettools.csharp-1.23.9/.omnisharp/1.37.6/omnisharp/.msbuild/Current/Bin/Microsoft.Common.CurrentVersion.targets(1180,5): Error: The reference assemblies for .NETFramework,Version=v4.7.1 were not found. To resolve this, install the Developer Pack (SDK/Targeting Pack) for this framework version or retarget your application. You can download .NET Framework Developer Packs at https://aka.ms/msbuild/developerpacks
[fail]: OmniSharp.MSBuild.ProjectManager
Attempted to update project that is not loaded: /Users/Shared/Unity/AppName/Assembly-CSharp.csproj



どうもC#用のパックが必要らしいので、記載されているURLに行ってみるものの、Winしかありませんでした。
困ったので調べてみると、以下の方法で解決できました。

■Unity側
@Player Settings > Other Settings > Configuration > Api Compatibility Level を「.NET 4.x」に変更。
■mac側
@homebrewを最新版にアップデート
※homebrew = macのPackageManagerのようなもの
Ahomebrewからmonoをインストール
BVSCの設定ファイルに追記

具体的に説明していきます。



■Unity側
@Player Settings > Other Settings > Configuration > Api Compatibility Level を「.NET 4.x」に変更。

.NETの設定が合っていない可能性があるので、プロジェクト設定を「.Net Standard 2.0」から「.Net 4.x」に変更。

スクリーンショット 2021-02-13_6.png

次に、Package Managerから、VSCに関するものを最新版に上げてみました。

スクリーンショット 2021-02-12_3.png

この段階で解決しなかったので、次はmac側の環境設定を調べてみたところ、homebrewが古くて設定も完了していないようでした。



■mac側
@homebrewを最新版にアップデート

最新版にアップデートしようとしたところ、エラーが出てしまいました。


% brew update
fatal: could not read Username for 'https://github.com': terminal prompts disabled
Error: homebrew/homebrew-php does not exist! Run `brew untap homebrew/homebrew-php` to remove it.
==> Downloading https://homebrew.bintray.com/bottles-portable-ruby/portable-ruby-2.6.3_2.yosemite.bottle.tar.gz
################################################################# 100.0%
==> Pouring portable-ruby-2.6.3_2.yosemite.bottle.tar.gz


ログで指定されたコマンドをそのまま打ちます。


% brew untap homebrew/homebrew-php
Untapping homebrew/php...
Untapped (35 files, 829.2KB).


再びアップデートを試みるも、再びエラー。


% brew update
Error:
homebrew-core is a shallow clone.
To `brew update`, first run:
git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
This command may take a few minutes to run due to the large size of the repository.
This restriction has been made on GitHub's request because updating shallow
clones is an extremely expensive operation due to the tree layout and traffic of
Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you
automatically to avoid repeatedly performing an expensive unshallow operation in
CI systems (which should instead be fixed to not use shallow clones). Sorry for
the inconvenience!


指定されたコマンドを打ったところ、今度は無事アップデートできました。


% git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
remote: Enumerating objects: 428535, done.
remote: Counting objects: 100% (428498/428498), done.
remote: Compressing objects: 100% (164714/164714), done.
remote: Total 420389 (delta 257766), reused 415481 (delta 252864), pack-reused 0
Receiving objects: 100% (420389/420389), 149.84 MiB | 15.91 MiB/s, done.
Resolving deltas: 100% (257766/257766), completed with 3776 local objects.


念のため確認。


% brew update
Already up-to-date.


次は、homebrewの設定状況を確認するため、「doctor」コマンドを使います。


% brew doctor
Please note that these warnings are just used to help the Homebrew maintainers
with debugging if you file an issue. If everything you use Homebrew for is
working fine: please don't worry or file an issue; just ignore this. Thanks!

Warning: The following directories do not exist:
/usr/local/Frameworks

You should create these directories and change their ownership to your user.
sudo mkdir -p /usr/local/Frameworks
sudo chown -R $(whoami) /usr/local/Frameworks

Warning: Unbrewed static libraries were found in /usr/local/lib.
If you didn't put them there on purpose they could cause problems when
building Homebrew formulae, and may need to be deleted.

Unexpected static libraries:
/usr/local/lib/libTMAESCrypt.a

Warning: You have unlinked kegs in your Cellar.
Leaving kegs unlinked can lead to build-trouble and cause formulae that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
boost
php
mysql

Warning: Xcode alone is not sufficient on Catalina.
Install the Command Line Tools:
xcode-select --install

Warning: Broken symlinks were found. Remove them with `brew cleanup`:
/usr/local/bin/innochecksum
 ……(たくさん)

Warning: Homebrew's "sbin" was not found in your PATH but you have installed
formulae that put executables in /usr/local/sbin.
Consider setting your PATH for example like so:
echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc


doctorで指摘されたコマンドを全て実行。


% sudo mkdir -p /usr/local/Frameworks
% sudo chown -R $(whoami) /usr/local/Frameworks
% brew cleanup
% xcode-select --install
% brew link boost
% brew link php
% brew link mysql
% rm -rf /usr/local/lib/libTMAESCrypt.a
% echo 'export PATH="/usr/local/sbin:$PATH"' >> ~/.zshrc


パスの設定変更を反映。


% source ~/.zshrc


これでhomebrewの設定が完了しました。念のため確認。


% brew doctor
Your system is ready to brew.


次のステップへ。

Ahomebrewからmonoをインストール

monoがインストールされているかと思いきや、インストールされていませんでした。


% brew upgrade mono
Updating Homebrew...
Error: mono not installed


なので、monoをインストール。


% brew install mono


数分でインストールできたので、doctorコマンドで設定をチェック。


% brew doctor
Warning: You have unlinked kegs in your Cellar.
Leaving kegs unlinked can lead to build-trouble and cause formulae that depend on
those kegs to fail to run properly once built. Run `brew link` on these:
mono

Warning: Broken symlinks were found. Remove them with `brew cleanup`:
/usr/local/bin/easy_install-3.8
/usr/local/bin/pip3.8


指定されたコマンドを打ち、monoにリンクを貼りました。


% brew cleanup
% brew link mono
% brew doctor
Your system is ready to brew.


最後に、VSCの設定ファイルを編集します。

BVSCの設定ファイルに追記

まずは、インストールされたmonoのバージョンを確認。


% cd /usr/local/Cellar/mono
% ls
6.12.0.107


このバージョン番号を使い、VSCの設定ファイルに追記します。

スクリーンショット 2021-02-13_4.png

macの場合、パスは
/Users/[ユーザー名]/Library/Application Support/Code/User/settings.json
でした。

赤い部分が追記した箇所です。


{
"window.zoomLevel": 0,
"omnisharp.useGlobalMono": "always",
"omnisharp.monoPath": "/usr/local/Cellar/mono/6.12.0.107"

}


VSCを再起動して、[command] + [Shift] + [o]を押してみたところ、無事、メソッド一覧が表示されました。

スクリーンショット 2021-02-13_5.png

これで作業効率が上がる!!

参考:
https://qiita.com/kyasbal_1994/items/ecf19a3feb60a12a61f9
https://qiita.com/hajimeni/items/b8d1b5db1cb08eeb7d1d
https://qiita.com/Ytz_Ichi/items/94e1c5c45fc8fd4459fa
https://qiita.com/ponsuke0531/items/f2ea798bcc8f1e876d90
https://qiita.com/haruu_11113/items/0bdde67f17b60e4fb657
https://qiita.com/FrogWoman/items/7c0fdaa7550dc5895a33
posted by be-style at 21:17| Comment(0) | Unity