分配

时间:2015-06-23 09:12:04

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

我有一个Android应用程序,用户可以在其中连接和断开与服务器的连接。我不希望在应用程序中进行任何类型的注册,但我希望服务器识别已连接到服务器的用户。一种方法是使用Google Play服务和Instance id API,每次客户端连接时,都会将gcm生成的ID发送到服务器。使用Google Play服务API我也可以轻松实现推送通知。但是,我觉得我不需要它们,我也必须在以后实现ios和Web客户端。 Afaik没有适用于网络的Google Play服务API,因此提出了一个问题:可能还有哪些替代方案?

1 个答案:

答案 0 :(得分:1)

我理解这个问题的方法是,你想要一个uniqueId,它对每个设备都是唯一的,你不需要我们从GCM获得的注册ID。 因此,您拥有的设备ID对于每个设备都是唯一的,并且有一种获取设备ID的方法

public String uniqueId() {
        final TelephonyManager tm = (TelephonyManager) mContext
                .getSystemService(Context.TELEPHONY_SERVICE);

        final String tmDevice, tmSerial, androidId;
        tmDevice = "" + tm.getDeviceId();
        tmSerial = "" + tm.getSimSerialNumber();
        androidId = ""
                + android.provider.Settings.Secure.getString(
                        mContext.getContentResolver(),
                        android.provider.Settings.Secure.ANDROID_ID);

        UUID deviceUuid = new UUID(androidId.hashCode(),
                ((long) tmDevice.hashCode() << 32) | tmSerial.hashCode());
        String deviceId = deviceUuid.toString();

        return deviceId;
    }