Androidで中断して再開したら最初から始まる【UUJ】

質問:
アプリをサスペンドさせてからレジュームさせようとすると、アプリが再開されず、必ずスプラッシュ画面からの起動となってしまいます。

回答:
PlayerSettingsの方で、サスペンド時にゲームを終了する設定をONにしていたりしませんか?

確認したのですが、AndroidのPlayerSettings上では仰られている設定は見当たりませんでした。

その設定はiOSのやつでした。
ちなみに、サスペンド時に何かしらの処理をしていたり、カスタムのActivityがあったり、ネイティブライブラリを使ったりしていますか?
あと、AndroidManifest.xmlをカスタムしているなど。

Activityやネイティブライブラリはカスタムしておりません。
AndroidManifest.xmlに関しては、アプリ内で広告を使用する際に設定をいじっていました。


AndroidManifest.xmlを元に戻して、どうなるかは試されましたか?
※元の状態がわからない場合は、Unityインストールフォルダの中で同名のファイルを検索してみてください。


カスタムしていたAndroidManifest.xmlを元に戻して確認したところ、うまくレジュームされました!
どの設定が悪さをしていたかはハッキリとは分かっておりませんので、調査を続けようと思います。
何か分かりましたら、こちらに書き込ませていただきます。

調査したところ、UnityPlayerNativeActivity内で以下のタグを追加すると直るようです。
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
なぜこの部分が抜けるとレジュームされなくなるのかは、よく分かりません。この設定が抜けるとアクティビティが起動しない?

まず、UnityPlayerNativceActivityはAndroid上でUnityのアプリを実行させるためのActivityです。
次に、
<intent-filter>
<action android:name=”android.intent.action.MAIN” />
<category android:name=”android.intent.category.LAUNCHER” />
</intent-filter>
はこれが含まれるActivityが、簡単に言うとメイン処理であることをOSに知らせるのに必要なものです。
なので、そのタグを抜かすとサスペンド-レジューム時にOS側がメイン処理を見失うような形になり、アプリが終了するような動きになってしまいますので、他のActivityをメインに据えたい場合以外は抜かしてはいけません。

Comments

comments

スポンサーリンク
336*280px