Android 设备是不是有静态 IP 地址?
Posted
技术标签:
【中文标题】Android 设备是不是有静态 IP 地址?【英文标题】:Do Android devices have a static IP address?Android 设备是否有静态 IP 地址? 【发布时间】:2012-03-11 07:37:03 【问题描述】:android 设备是否有一个服务器可以识别它们的静态 IP 地址?我想知道这将允许我的游戏无需登录即可保存数据。
【问题讨论】:
我不知道IP,但他们应该有一个唯一的mac地址。 考虑当用户更换/升级设备并从备份或 SD 卡恢复数据时会发生什么。该新设备是否应该被视为来自同一用户?如果是这样,那么您可能不想被绑定到硬件或网络配置的任何属性。 【参考方案1】:这完全取决于它们连接到什么。默认情况下,没有。大多数 Android 设备都为无线网络配置了 DHCP,我不知道有任何运营商会为其数据网络上的移动设备分配静态 IP 地址。
【讨论】:
我一直在寻找一种方法来修复我的 Android 移动 IP,通过某种代理或 IP 欺骗器或其他方式,但到目前为止无济于事。我正在尝试仅从单个 IP 保护对路由器的远程访问,如果我的 IP 一直在变化,我将无法可靠地执行此操作。至少在 Play 商店中似乎没有任何有用的东西。如果我发现了什么,我会回帖。【参考方案2】:正如其他人已经回答的那样,不,移动设备通常没有静态 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;
【讨论】:
换个设备怎么样?这不会改变令牌 是的,这会改变令牌。此外,如果他们卸载该应用程序,然后重新安装它,他们将获得一个新令牌。如果您想在这些更改中识别它们,您最终需要将令牌与用户帐户(电子邮件地址或用户名)相关联。这样他们就可以在重新安装您的应用或更换设备时登录该帐户。【参考方案3】:Android 设备既可以通过 WiFi 连接,也可以通过 3G 连接,这显然具有不同的 IP。 每次重连时,3G上的IP地址也会发生变化。
【讨论】:
【参考方案4】:移动运营商使用 DHCP(动态主机配置协议)是一种应用层协议,用于为新连接到其网络的设备分配 IP 地址,并为移动设备分配可重复使用的 IP 地址。
【讨论】:
以上是关于Android 设备是不是有静态 IP 地址?的主要内容,如果未能解决你的问题,请参考以下文章