【发布时间】:2012-03-11 07:37:03
【问题描述】:
Android 设备是否有一个服务器可以识别它们的静态 IP 地址?我想知道这将允许我的游戏无需登录即可保存数据。
【问题讨论】:
-
我不知道IP,但他们应该有一个唯一的mac地址。
-
考虑当用户更换/升级设备并从备份或 SD 卡恢复数据时会发生什么。该新设备是否应该被视为来自同一用户?如果是这样,那么您可能不想被绑定到硬件或网络配置的任何属性。
Android 设备是否有一个服务器可以识别它们的静态 IP 地址?我想知道这将允许我的游戏无需登录即可保存数据。
【问题讨论】:
这完全取决于它们连接到什么。默认情况下,没有。大多数 Android 设备都为无线网络配置了 DHCP,我不知道有任何运营商会为其数据网络上的移动设备分配静态 IP 地址。
【讨论】:
正如其他人已经回答的那样,不,移动设备通常没有静态 IP 地址,而是使用 DHCP 获取动态 IP 地址。
但是,要回答您的基本问题,您可以使用 java.util.UUID class 为用户生成一个唯一令牌。将此生成的令牌保存到您应用的 SharedPreferences 中,您可以使用它来识别您的用户:
public static String getDeviceUuid(Context context) {
final SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
// Attempt to get an existing device uuid
String uuid = preferences.getString("device_uuid_key", "");
if (TextUtils.isEmpty(uuid)) {
// We don't have a device id, generate one!
uuid = UUID.randomUUID().toString();
// Persist the new id to shared preferences
final Editor editor = preferences.edit();
editor.putString("device_uuid_key", uuid);
editor.commit();
}
return uuid;
}
【讨论】:
Android 设备既可以通过 WiFi 连接,也可以通过 3G 连接,这显然具有不同的 IP。
每次重连时,3G上的IP地址也会发生变化。
【讨论】:
移动运营商使用 DHCP(动态主机配置协议)是一种应用层协议,用于为新连接到其网络的设备分配 IP 地址,并为移动设备分配可重复使用的 IP 地址。
【讨论】: