Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 无设备ID和牛轧糖上的设备标识_Java_Android - Fatal编程技术网

Java 无设备ID和牛轧糖上的设备标识

Java 无设备ID和牛轧糖上的设备标识,java,android,Java,Android,我感兴趣的是如何用其他方式识别用户: 我不想使用设备ID,因为它需要权限并询问用户,这会破坏我的应用程序 我不能使用MAC地址,因为从Nugat它是不允许的 其他身份验证内容不是唯一的 我需要一些唯一的设备标识符,我可以在没有权限的情况下使用这些标识符将数据库中的用户分配给他的设备。建议的方法是为应用程序生成一个唯一的ID,并将其存储在应用程序的本地数据中。这样,你的应用程序就可以在安装时记住它是否是同一台设备,而不是跨多个安装 e、 g 请注意,无法获得持久设备标识符是出于设计。你不应该像那样

我感兴趣的是如何用其他方式识别用户:

我不想使用设备ID,因为它需要权限并询问用户,这会破坏我的应用程序

我不能使用MAC地址,因为从Nugat它是不允许的

其他身份验证内容不是唯一的


我需要一些唯一的设备标识符,我可以在没有权限的情况下使用这些标识符将数据库中的用户分配给他的设备。

建议的方法是为应用程序生成一个唯一的ID,并将其存储在应用程序的本地数据中。这样,你的应用程序就可以在安装时记住它是否是同一台设备,而不是跨多个安装

e、 g


请注意,无法获得持久设备标识符是出于设计。你不应该像那样跟踪用户。如果用户卸载你的应用程序,你应该完全忘记它们。

设备ID和MAC地址是到处使用的唯一ID。但naugat不允许访问MAC地址

您可以使用手机的注册ID。这是谷歌服务器为我们生成的唯一id。此ID用于输入基于GCM的通知。我已经实现了基于GCM的通知,这就是为什么使用此id作为唯一id的想法

您可以在android中搜索基于GCM的推送通知。您将了解如何生成此注册表。Id。它需要gcm库和internet权限

捕获卸载 Reg id非常长4096字节,因此不希望在db中作为唯一id进行排序。解决方案可以, 当您收到NotRegistered错误或卸载应用程序时,您确实应该从数据库中删除该注册ID,或者至少将其标记为非活动状态,并停止向其发送消息。但是,如果应用程序将重新安装在先前卸载过的设备上,则应用程序在再次向GCM注册时可能会获得相同的注册ID,因此您的服务器应允许在某一点上给予NotRegistered的注册ID再次激活

当您在Google的响应中获得规范注册ID时,您应该更新旧的注册ID。

这正是它的目的,它会生成一个唯一的ID,然后您可以使用它来关联数据。这是一种比UUID更好的方法的原因是,无论何时您需要获取令牌,您大部分时间都会获得相同的令牌,如果令牌发生更改,您将收到通知,届时您将使用新ID更新后端

UUID总会给你一些新的东西


我希望这不需要任何许可

import android.provider.Settings.Secure;

private String androidId = Secure.getString(getContext().getContentResolver(),
                                                    Secure.ANDROID_ID);

在设备上生成UUID,并将其存储在内部存储器中,例如GetFileDir,唯一标识特定应用程序安装。如果您不想包含兆字节的Google libs,也不想知道Google为什么要为这么简单的概念创建一个helper类,请参阅我的帖子。@JeffreyBlattman InstanceID不仅仅是一个helper,而且比UUID更有用。您无法查询UUID并获取有关用户是否处于活动状态或密钥是否仍然有效的信息密钥如何无效?InstanceID文档中列出的所有情况都在我发布的解决方案中处理。@当用户卸载应用程序并在服务器上留下孤立数据时,JeffreyBlattman密钥将无效。那么,与我发布的解决方案相同吗?
import android.provider.Settings.Secure;

private String androidId = Secure.getString(getContext().getContentResolver(),
                                                    Secure.ANDROID_ID);