我正在尝试将支付API集成到我的应用程序中,其中一个必填字段是设备指纹。我已经用谷歌搜索过了,我得到的只是指纹扫描仪和触摸Id支持,而这并不是我需要的。有什么想法吗?
发布于 2021-06-12 20:44:59
实际上,也许你能做的最简单的事情不是获取或计算唯一的设备标识符,而是为你的应用程序的每个特定安装分配一个唯一的代码(因此,如果应用程序被卸载并重新安装,这个代码将会改变)。
我会试着给你举个例子。
在主类的init()方法中,可以添加以下代码:
// Register the device (assigning it an unique deviceId)
// The deviceId is used also by: https://www.codenameone.com/javadoc/com/codename1/io/Util.html#getUUID--
registerDevice();您的registerDevice()实现可以设置deviceId来识别此应用程序安装。在这种情况下,最好和最可靠的解决方案是从您的服务器获取UUID,例如如下代码:
// Sets the device unique identifier
Rest.get(Server.getRestServerURL() + "/uniqueIdentifier").fetchAsString((Response<String> response) -> {
String deviceId = response.getResponseData();
Preferences.set("deviceId", deviceId);
Log.p("DeviceId: " + deviceId, Log.INFO);
});服务器端代码非常简单。在Java世界中,假设我们有一个Spring Boot服务器,代码可能是:
@GetMapping("/uniqueIdentifier")
@ResponseBody
public String uniqueIdentifier() {
return UUID.randomUUID().toString().replace("-", "");
}这个解决方案应该足够了。请注意,UUID必须是唯一的,但它们不是设计为不可预测的。你可以在这里看到关于这方面的讨论:https://stackoverflow.com/a/41156/1277576
或者,如果您的代码仅用于客户端,请仔细阅读以下Javadoc代码:https://www.codenameone.com/javadoc/com/codename1/io/Util.html#getUUID--
Util.getUUID()在其规范的文本表示中返回一个伪随机的通用唯一标识符。在大多数情况下,这可能就足够了。
这些只是基本的建议。显然,您需要开发代码,以便只请求一次deviceId。
https://stackoverflow.com/questions/67942266
复制相似问题