【问题标题】:Unable to get token on API level 17无法在 API 级别 17 上获取令牌
【发布时间】:2015-08-25 21:49:52
【问题描述】:

我正在运行这些命令以获取令牌:

  InstanceID instanceID = InstanceID.getInstance(getApplicationContext());
  String token = instanceID.getToken(Config.GOOGLE_PROJECT_ID,
                             GoogleCloudMessaging.INSTANCE_ID_SCOPE, null);

但是得到这个异常:

java.io.IOException: MISSING_INSTANCEID_SERVICE
            at com.google.android.gms.iid.zzc.zza(Unknown Source)
            at com.google.android.gms.iid.zzc.zzb(Unknown Source)
            at com.google.android.gms.iid.zzc.zza(Unknown Source)
            at com.google.android.gms.iid.InstanceID.zzc(Unknown Source)
            at com.google.android.gms.iid.InstanceID.getToken(Unknown Source)
            at autofocus.com.autofocus.activity.ItemListActivity$4.doInBackground(ItemListActivity.java:408)
            at autofocus.com.autofocus.activity.ItemListActivity$4.doInBackground(ItemListActivity.java:398)

知道我做错了什么吗?

【问题讨论】:

    标签: android push-notification google-cloud-messaging


    【解决方案1】:

    根据官方文档:

    https://developers.google.com/android/reference/com/google/android/gms/iid/InstanceID#ERROR_MISSING_INSTANCEID_SERVICE

    您收到此错误是因为

    无法生成令牌。仅支持带有 Google Play 的设备。

    在没有启用/安装 Google Play 服务的情况下在模拟器上进行测试?

    【讨论】:

    • 谢谢。我认为这是问题所在,问题是:如何在没有 Google Play 安装的情况下在我的模拟器设备上安装 Google Play? :)
    • 有一个众所周知的黑客攻击。这是 xamarin android player university.xamarin.com/resources/…google 的链接,用于 genymotion 的类似解决方案。如果使用谷歌官方模拟器,那么,停止使用并切换到genymotion或xap
    • 谢谢,效果很好。我仍然不明白为什么 Google 没有将 Google Play 内置在较旧的模拟器上。它可以节省我大约 2 个小时的生命:)
    【解决方案2】:

    你需要在你的模拟器中安装gapps版本的android,如果使用genymotion你需要在gapps di之前安装Genymotion-ARM-Translation_v1.1 之后,可能会起作用

    【讨论】:

      猜你喜欢
      • 2013-03-05
      • 2014-07-03
      • 1970-01-01
      • 2016-02-09
      • 2018-10-10
      • 1970-01-01
      • 2018-01-08
      • 2020-10-09
      • 2019-02-15
      相关资源
      最近更新 更多