我需要开发一个webapp,它需要知道正在使用它的智能手机的唯一标识符(例如,mac地址)。我所看到的大部分方法都是基于cookie / IP的,但是在我的情况下这没有用,因为我试图将原生Android应用程序的使用与其对应的webapp的使用相匹配。
那么,这甚至可能吗?如果是,我应该使用哪种技术进行webapp开发?
谢谢!
答案 0 :(得分:1)
您可以与用户保留UUID Cookie。当他们跳上应用程序时,请根据您之前访问者的列表检查UUID。如果你找到它,它们并不是唯一的。
编辑:通过cookie,我的意思是你可以在用户的SD卡上留下一个UUID字符串文件,或者将它存储在应用程序的首选项中。
答案 1 :(得分:1)
据推测,该应用程序是从Android Market安装的,因此您无法匹配下载URL中传递的站点cookie(或者,毫无疑问,这正是您所做的)。
既然如此,你可以使用URL重写吗?或者至少在每次访问您的网站时插入一个唯一的ID,无疑与cookie相对应。然后,当用户下载应用程序并在第一次访问浏览器历史记录并查找此唯一ID时运行它,将其存储(如果存在)并将其包含在后续服务器请求中。
int occasions=0;
String sessionId = null;
while (cursor.moveToNext()) {
String urlVisited=cursor.getString(cursor.getColumnIndex(BookmarkColumns.URL));
Log.d("Match",urlVisited);
if (urlVisited.contains("www.mysite.com") && urlVisited.contains("MYUNIQUEID")) {
//There's a unique ID. Trim it out of the query string.
sessionId=urlVisited.substring(urlVisited.indexOf("MYUNIQUEID")+10);
if (sessionId.indexOf('&')>-1) {
sessionId=sessionId.substring(0,sessionId.indexOf('&'));
}
occasions++;
}
}
Log.d("Match","occasions="+occasions);
if (sessionId!=null) {
getSharedPreferences("com.mysite", MODE_PRIVATE).edit().putString("SITEID", sessionId);
}
这看起来像是一个黑客 - 可能是因为它 - 但它应该工作,我想不出另一种确定的方式来链接浏览器和自定义客户端请求。当然,如果用户在下载和运行应用程序之前清除其历史记录或cookie,则上述操作将无效。
我希望能有所帮助。