2

我目前有在启用 Google Play 和 Kindle 设备上获取设备标识符(广告 ID)的代码。现在我正在寻找针对开发人员的文档,这些文档将解释如何在其他 Android 分支上获取它(类似于亚马逊的说明),尤其是。在为中国当地市场制造的小米和阿里巴巴手机上。

我能找到的一个资源是AppsFlyer 提供的,这显然是伪造的,因为它声明“IMEI 和 Android ID - 两者都是准确归因所必需的”,而前者自 Android 6 以来已被禁用(除非您想提示用户提供运行时权限)此外它的其他问题,后者不是 Oreo 以来唯一的设备

4

2 回答 2

2

是的,IMEI、Mac 地址和 Android ID 用于中国的 Android 市场。Unity、Vungle 和 Admob 实际上都在追求 Android 市场。我们还听说其他广告网络专门为中国市场创建了定制的 Android SDK。

上次我在中国的 Android 市场上与一位中国开发者交谈是不久前的事了,所以我的信息可能已经过时了。今晚我会仔细检查。

于 2018-06-07T23:12:51.533 回答
1

这不是我想要的答案,但经过进一步研究,“中国第一家也是最大的独立移动广告平台”游米确实有一个开源类,他们做了AppsFlyerDeviceInfoUtils推荐的一切,也就是谷歌的一切反对。

具体来说,对于每个请求,他们都会发送telephonyManager.getDeviceId();(GSM 手机上的 IMEI)、telephonyManager.getSubscriberId()(GSM 手机上的 IMSI)、MAC 地址ANDROID_ID. 同样,前两个需要提示用户允许应用程序“拨打和管理电话”,这非常令人毛骨悚然(导致应用程序评级不佳和/或权限被拒绝)。后两者曾经可以工作,但就 Oreo 而言,它们不再是唯一的设备,正如我在问题陈述中提到的那样。

更新:我现在已经下载了小米的 Mimo SDK(广告 SDK)。反编译显示一个类AdvertisingIdHelper,它只有两个方法,一个是检查设备是否安装了 Google Play 商店,另一个看起来像这样:

  private static d z(Context paramContext)
  {
    if (!y(paramContext)) {
      return null;
    }
    try {
      d localD = new d();
      Intent localIntent = new Intent("com.google.android.gms.ads.identifier.service.START");

      localIntent.setPackage("com.google.android.gms");
      if (paramContext.bindService(localIntent, localD, 1))
        return localD;
    } catch (SecurityException localSecurityException) {
      com.miui.zeus.a.a.b("stacktrace_tag", "stackerror:", localSecurityException);
      return null;
    }
    return null;
  }

它在整个 SDK 中的作用尚不清楚,但它绝对是一种查询 Google 的广告 ID 而不是小米的替代 ID 的方式。如果这适用于所有情况,或者仅适用于在中国境外销售的设备(确实有 Google Play 服务),则再次不清楚。

于 2018-05-31T22:17:00.357 回答