Android Smartech pushToken/oldPushToken为空
我们使用的是Smartech SDK 3.0.1,我集成了SDK方法来设置FCM令牌,但是当我看到SDK日志时,我得到的pushToken和oldPushToken值为空。在我的日志中我可以看到我的令牌存在。请帮我解决这个问题Android Smartech pushToken/oldPushToken为空,android,notifications,sdk,firebase-cloud-messaging,token,Android,Notifications,Sdk,Firebase Cloud Messaging,Token,我们使用的是Smartech SDK 3.0.1,我集成了SDK方法来设置FCM令牌,但是当我看到SDK日志时,我得到的pushToken和oldPushToken值为空。在我的日志中我可以看到我的令牌存在。请帮我解决这个问题 { "advertiserId": "", "eventId": "99", "pushTokens": [ { "gwSourc
{
"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。在应用程序类中使用以下变通方法。此代码段将从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.");
}
}
private void setFCMPushToken(最终上下文){
试一试{
FirebaseInstanceId.getInstance().getInstanceId().addOnCompleteListener(新OnCompleteListener(){
@凌驾
未完成的公共void(@NonNull任务){
if(task.issusccessful()&&task.getResult()!=null){
Smartech Smartech=Smartech.getInstance(新的WeakReference(上下文));
字符串fcmToken=task.getResult().getToken();
字符串currentToken=smartech.getDevicePushToken();
Log.i(“令牌”,“FCM实例Id令牌:+fcmToken”);
Log.i(“令牌”,“当前FCM令牌:“+currentToken”);
if(TextUtils.isEmpty(currentToken)){
smartech.setDevicePushToken(fcmToken);
Log.i(“令牌”,“新令牌集:”+fcmToken);
}如果(!currentToken.equals(fcmToken))为else{
smartech.setDevicePushToken(fcmToken);
Log.i(“令牌”,“新令牌集:”+fcmToken);
}否则{
Log.i(“令牌”,“两个令牌相同”);
}
}
}
});
}捕获(例外e){
e、 printStackTrace();
Log.e(“令牌”,“设置令牌失败”);
}
}