NIFCLOUD-mbaas / UserCommunity

ニフクラ mobile backend ユーザーコミュニティ
https://mbaas.nifcloud.com/
81 stars 18 forks source link

【過去質問】Android SDK初期化エラーの検知について #1349

Open ncmbsupport opened 1 year ago

ncmbsupport commented 1 year ago

Android SDKを利用していますが、SDKを初期化する際に発生した初期化のエラーや例外を、アプリでtry/catchなどで検知することは可能でしょうか? できれば、SDKの初期化がもし失敗した場合に、失敗した情報を別サービスにログとして送信して、初期化のエラーを検知できるようにと考えております。

想定しているコードは以下です。

try {
    NCMB.initialize(applicationContext, "AppKey", "ClientKey");
}
catch(e:Exception) {
   // エラー検知したら何らかの処理
}
ncmbsupport commented 1 year ago

SDKを初期化する際に発生した初期化のエラーや例外を、アプリでtry/catchなどで検知することは可能でしょうか? initialize処理内では、以下のデバイス登録する処理を実施しております。

NCMBInstallationUtils.saveInstallation(installationCustomFields);

こちらについて、処理内ではtry/catchを行っております。

<省略>
    } catch (NoClassDefFoundError e) {
            Log.i("INFO", "For Push Notification function, you must be install Google Play Services in SDK Manager and add the FCM dependency. More information: https://mbaas.nifcloud.com/doc/current/push/basic_usage_android.html");
            DeviceTokenCallbackQueue.getInstance().execQueue(null,new NCMBException(new IllegalArgumentException(THIS_DEVICE_NOT_SUPPORTED_MESSAGE)));
        } catch (Exception e) {
            Log.e("Error", e.toString());
            DeviceTokenCallbackQueue.getInstance().execQueue(null,new NCMBException(new IllegalArgumentException(THIS_DEVICE_NOT_SUPPORTED_MESSAGE)));
        }
<省略>

上記処理で出しているログを別サービスに送信してエラー検知として使用することはできませんが、それ以外の未知のExceptionをお客様側のアプリでtry/catch処理を実装し、エラー検知として利用できる可能性はあります。 もしご利用される場合は十分な検証の上、実装いただければと思います。

■参考 1) Android初期化のドキュメントについて: ドキュメント 2) 初期化処理について: 関連コード 3) saveInstallation処理について: 関連コード