我想知道是否有人知道在全球数据库中针对移动设备(iOS和Android)存储数据的最佳方法?
我正在构建一个基于查询编写/检索信息的应用程序,但是我需要知道返回的任何记录是否都是从该设备发送的。
基本上,我们的想法是,如果用户提交了一些信息(存储在数据库中),他们就可以访问应用程序的其他功能。当应用程序启动时,我将检查数据库以查看他们过去是否提交了信息并允许访问其他区域。
我使用本地存储来提供他们提交的信息,但也可以远程存储,因此如果本地存储因任何原因而损坏,则仍然会记录用户提交的信息。
ID必须是设备唯一的,因为可能有100个用户(希望有数百万),因此ID必须足够独特,以免永远与其他设备冲突。提交的任何信息都可供所有其他用户检索。
谢谢:)
答案 0 :(得分:3)
我认为有三种选择:
<强> 1。用户强>
您可以创建典型的用户名+密码用户方案,并使用此方法验证用户。这种方法的一个可能的优点是用户可以从他们的任何设备登录(例如,根据您的方法,用户使用iPhone和iPad上的应用程序会有两个不同的视图 - 您可能不需要这些视图)。当然,这意味着强制应用的每个用户在您的系统中注册,这是不理想的。
<强> 2。应用安装
您可以在第一次运行应用时让您的应用生成UUID来唯一标识应用安装(您可以使用AS3 helper library生成UUID)。您可以在本地存储此UUID,并将其与应用程序发出的每个请求一起发送。这种方法的缺点是它不能唯一地识别设备 - 只有特定的应用程序安装。例如,如果用户删除应用程序,然后稍后重新安装它,即使用户位于同一设备上,它现在也将被视为新的唯一设备。
第3。设备
AIR没有内置的方法来读取设备识别信息。但是,您可以通过AIR Native Extensions检索设备信息,例如this one可以获取MAC地址和其他一些内容。在阅读和存储设备信息时涉及隐私问题和其他问题,因此您可能最好尝试将OpenUDID项目实现为AIR Native Extension,因为他们已经处理了所有此类问题。不幸的是,我从未想过开发ANE,所以我不确定将OpenUDID变成ANE是多么复杂或可行。
摘要:由于易于实施,我建议使用应用安装方法。如果您真的需要这个独特的设备并担心多个应用程序安装案例,您将不得不弄清楚如何使用原生扩展来获取所需的信息。如果您决定用户而不是设备进行识别,请使用用户方法。
答案 1 :(得分:0)
截至目前,我认为不可能使用air mobile获取硬件设备。但是你有两个选择。
如果MAC地址足够好,那么有一个ANE可以让你在iOS和Android上抓取它。
http://www.adobe.com/devnet/air/native-extensions-for-air/extensions/networkinfo.html
以及如何使用它的示例
http://cookbooks.adobe.com/post_Getting_NetworkInfo_from_both_Android_and_iOS-19473.html
您也可以编写自己的ANE,将Android和iOS实现包装起来应该非常简单。
目标-c:[[UIDevice currentDevice] uniqueIdentifier]
Android:TelephonyManager.getDeviceId()
如果您的应用需要任何类型的用户帐户或登录,则最佳选择是将此设置存储在远程数据库中。