Smartech pushToken/oldPushToken 为空白

Smartech pushToken/oldPushToken is blank

我们使用的是 Smartech SDK 3.0.1,我已经集成了 SDK 方法来设置 FCM 令牌,但是当我看到 SDK 日志时,我得到的 pushToken 和 oldPushToken 值为空。在我的 logs 中,我可以看到我的令牌存在。请帮我解决这个问题。

{
  "advertiserId": "",
  "eventId": "99",
  "pushTokens": [
    {
      "gwSource": 1,
      "pushToken": "",
      "pushTokenOld": ""
    }
  ],
  "guid": "XXXX-XXXX-XXXX-XXXX",
  "carrier": "",
  "deviceHeight": "1280",
  "appId": "XXXX-XXXX-XXXX-XXXX",
  "deviceLocale": "en",
  "radio": "UNKNOWN",
  "deviceWidth": "800",
  "deviceMake": "lenovo",
  "vendorId": "",
  "countryCode": "",
  "appVersion": "1.0",
  "sdkVersion": "3.0.1",
  "appBuild": "1",
  "useAdvId": false,
  "osName": "android",
  "pushTokenOld": "",
  "eventTime": "1604323968134",
  "osVersion": "7.1.1",
  "deviceModel": "lenovo tb-x304l",
  "appBundleId": "com.mysampleapp",
  "pushToken": "",
  "eventName": "device_common_data",
  "bod": 3602
}

您可能错过了捕获令牌并传递给 SDK。在您的应用程序中使用以下解决方法 class。此代码段将从 Firebase 获取生成的 FCM 令牌并将其设置为 SDK。

private void setFCMPushToken(final Context context) {
        try {
            FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(new OnCompleteListener<InstanceIdResult>() {
                @Override
                public void onComplete(@NonNull Task<InstanceIdResult> task) {
                    if (task.isSuccessful() && task.getResult() != null) {
                        Smartech smartech = Smartech.getInstance(new WeakReference<>(context));
                        String fcmToken = task.getResult().getToken();
                        String currentToken = smartech.getDevicePushToken();

                        Log.i("TOKEN", "FCM Instance Id Token: " + fcmToken);
                        Log.i("TOKEN", "Current FCM Token: " + currentToken);

                        if (TextUtils.isEmpty(currentToken)) {
                            smartech.setDevicePushToken(fcmToken);
                            Log.i("TOKEN", "New token set: " + fcmToken);
                        } else if (!currentToken.equals(fcmToken)) {
                            smartech.setDevicePushToken(fcmToken);
                            Log.i("TOKEN", "New token set: " + fcmToken);
                        } else {
                            Log.i("TOKEN", "Both tokens are same.");
                        }
                    }
                }
            });
        } catch (Exception e) {
            e.printStackTrace();
            Log.e("TOKEN", "Failed to set token.");
        }
    }