来自google-services.json的值返回错误

时间:2016-07-29 12:30:44

标签: android json google-cloud-messaging google-play-services

当我尝试在运行时获取特定android风格的gcm_defaultSenderId时,它无法提供正确的值。

例如:我得到了味道tst,google-services.json看起来像这样

 {
  "project_info": {
    "project_number": "12345678910", 12345678910
    "project_id": "api-project-12345678910"
  },
  "client": [
    {
      "client_info": {
        "mobilesdk_app_id": "1:12345678910:android:xxxxxxxxxxxxx",
        "android_client_info": {
          "package_name": "do.something.app"
        }
      },
      "oauth_client": [],
      "api_key": [
        {
          "current_key": "XXXxxxx-XXXXxxxXXXXXxxxxXXXx"
        }
      ],
      "services": {
        "analytics_service": {
          "status": 1
        },
        "appinvite_service": {
          "status": 1,
          "other_platform_oauth_client": []
        },
        "ads_service": {
          "status": 1
        }
      }
    }
  ],
  "configuration_version": "1"
}

json文件放在tst / google-services.json中。当我尝试在运行时使用R.string.gcm_defaultSenderId访问gcm_defaultSenderId时,返回的值为:9876543。我希望返回值是project_number,它在构建时设置为gcm_defaultSenderId,就像它在这里写的那样:https://developers.google.com/android/guides/google-services-plugin。有谁知道为什么价值与google-service.json不一样?

1 个答案:

答案 0 :(得分:0)

我修好了。我试着像这样得到gcm_defaultSenderId:

R.string.gcm_defaultSenderId 

这个值有一个十六进制值,如0X23923912,在我看来,它是指向在构建时(?)设置的正确值的指针。现在看起来Java正在将此值转换为int(?)并返回数字9876543.我通过使用当前上下文来修复此问题:

context.getResources().getString(R.string.gcm_defaultSenderId

现在返回正确的SenderId。