# トラブルシューティングのヒント

> Resolve common issues with Firebase settings, dependencies, and SDK integration.

Push Notifications SDK を使用して問題やエラーが発生した場合は、以下に示す一般的なトラブルシューティングのヒントに従ってください。

トラブルシューティングのヒントの中には、特定のエラーに言及しているものがあります。ただし、このような問題が発生していない場合でも、順番どおりに目を通すことを推奨します。

## 1. (Android) Push Notifications 設定内の Firebase 値を確認する##1-android-verify-your-firebase-values-inside-the-push-notifications-settings

Push Notification SDK を使用しているときに、テストデバイスを Firebase に登録しようとして問題が発生した場合、Firebase 値が空または無効になっている可能性があります。

Firebase の詳細情報を [Push Notifications Settings](./sdk.md#push-notifications-settings) (Push Notifications 設定) セグメントに追加する方法を確認してください。

または、指定した値が正しい場合には、その値の後に **空白/スペース** がないことを確認してください。これが問題の原因になることがわかっています。

## 2. (EDM4U/MDR) Push Notifications SDK の依存関係が解決されていることを確認する##2-edm4umdr-verify-that-the-dependencies-for-the-push-notifications-sdk-have-been-resolved

> **Note:**
>
> Push Notifications と併用して External Dependency Manager for Unity (EDM4U) または Mobile Dependency Resolver (MDR) を統合しているユーザーに適用されます。

[External Dependency Manager for Unity (EDM4U)](./sdk.md#external-dependency-manager-for-unity-edm4u-support) サポートのセクションで説明しているように、Push Notifications SDK は自らの依存関係を解決するために External Dependency Manager for Unity (EDM4U) や Mobile Dependency Resolver (MDR) を必要とせず、それらをバンドルすることもありません。ただし、どちらかが使用される場合、Push Notifications SDK によって統合されます。

その他のパッケージで EDM4U または MDR が必要ない場合は、**これらのアンインストールを推奨します**。

それ以外の場合、以下のステップに従うことを推奨します。

1. 依存関係ファイル `PushSDKDependencies.xml` が生成されたことを確認します。これを、自動生成される `Assets/Push Notifications/Editor/Android` ディレクトリに配置してください。
   * このファイルが存在しない場合は、Unity プロジェクトを再度開きます。このプロセスでファイルが生成されるはずです。
2. `Resolve` または `Force Resolve` オプションを使用します。どちらも、**Assets > External Dependency Manager > Android Manager** (アセット > 外部依存関係マネージャー > Android マネージャー) にあります。
3. Push Notifications SDK の依存関係が解決されたことを、`Display Libraries` オプションを使用して確認します。これも、**Assets > External Dependency Manager > Android Manager** (アセット > 外部依存関係マネージャー > Android マネージャー) にあります。以下の行が表示されるはずです。
   ```text
   implementation 'com.google.firebase:firebase-messaging-ktx:22.0.0' // Assets/Push Notifications/Editor/Android/PushSDKDependencies.xml:9
   ```
   * 他のパッケージまたは SDK が同じ依存関係を利用している場合は、上記の行の横にあるコメントが少し異なることに注意してください。


**Frame:**
![](/api/media?file=/push-notifications/media/images/edm4u-options.png)

## 3. (Android) ビルドプロセスの際に Minify (縮小) で Push Notifications SDK が除外されていないことを調べる##3-android-check-that-minify-isnt-excluding-the-push-notifications-sdk-during-the-build-process

[EDM4U/MDR のトラブルシューティングのセクション](#2-edm4umdr-verify-that-the-dependencies-for-the-push-notifications-sdk-have-been-resolved) を完了したが、まだ以下のようなエラーが発生している場合:

```text
java.lang.ClassNotFoundException: com.unity.services.pushnotifications.android.UnityCallbackClass
```

**Player Settings > Publishing > Minify** (プレイヤー設定 > 公開 > 縮小) の下の [Minify](https://docs.unity3d.com/Manual/class-PlayerSettingsAndroid.html#minify) (縮小) オプションを調べてください。`Release` (リリース) または `Debug` (デバッグ) チェックボックスがオンになっている場合は、Minify (縮小) を使用しています。これにより、縮小プロセスの一環として Push Notifications SDK がリリース/デバッグビルドで除外される可能性があり、"クラスの欠落" エラーが発生します。

Minify (縮小) が必要ない場合は、オフにすることでこの問題を解決できます。

引き続き Minify (縮小) を使用する場合は、Push Notifications のクラスを [カスタム proguard ファイル](https://docs.unity3d.com/Manual/class-PlayerSettingsAndroid.html#build) の下に追加して、Push Notifications SDK 機能が縮小プロセスの際に除外されないようにする必要があります。

**Player Settings > Publishing > Build > Custom Proguard File** (プレイヤー設定 > 公開 > ビルド > カスタム Proguard ファイル) の下で `Custom Proguard File` を有効にします。


**img.png:**
![img.png](/api/media?file=/push-notifications/media/images/custom-proguard.png)

指定されたパスに作成されたファイルを開いて、以下の行を追加します。

```text
-keep class com.unity.services.pushnotifications** { *;}
```

これで問題が解決するはずです。

## 4. (iOS) リモート通知が XCODE で有効になっていることを確認する##4-ios-ensure-remote-notifications-are-enabled-in-xcode

iOS アプリが Push Notifications を受け取るためには、`Remote Notifications` 機能を許可する必要があります。

これを行わなかった場合、アプリで以下のエラーが発生します。

```text
Failed to register for remote notifications: no valid “aps-environment” entitlement string found for application
```

**Signing & Capabilities > Capability > Background Modes > Remote Notifications** (署名と機能 > 機能 > バックグラウンドモード > リモート通知) に移動して、`Remote Notifications` (リモート通知) 機能を指定します。


**Frame:**
![](/api/media?file=/push-notifications/media/images/xcode-build.png)

## 5. Unity Dashboard の Push Notifications 設定で API キーを調べる##5-check-your-api-keys-in-the-unity-dashboard-under-push-notifications-settings

Push Notifications をエンドユーザーデバイスに送信するには、Google と Apple のキーを Unity Dashboard の **LiveOps > Push Notifications** の下の `Settings` (設定) に追加します。

Google キーの追加に関するガイドは [こちら](./get-started.md#google)、Apple キーの追加に関するガイドは [こちら](./get-started.md#apple) を参照してください。

**iOS** の場合、キーがターゲットビルドバージョンと一致することを確認します。**デバッグ** ビルドの場合は `Sandbox` (サンドボックス) オプションを `True` に設定し、**プロダクション** ビルドの場合は `False` に設定します。キーとビルドバージョンが一致しないと、テストデバイスは通知を受け取りません。

> **Note:**
>
> 生成された XCODE プロジェクトから iOS アプリをビルドしているとき、場合によっては、`run` (実行) セクションのすべてのターゲットのスキーム (例えば、`Unity-iPhone` や `notificationservice`) を `debug` (デバッグ) から `release` (リリース) に (`Sandbox` (サンドボックス) が `False` に設定されている場合)、または `release` (リリース) から `debug` (デバッグ) に (`Sandbox` (サンドボックス) が `True` に設定されている場合) 切り替える必要があります。

[テストガイド](./sdk.md#testing-the-sdk-integration) を使用してキーが機能していることを調べます。
