了解移动网络应用访问者是否独一无二的最准确方法是什么?

时间:2012-02-08 15:42:36

标签: android

我需要开发一个webapp,它需要知道正在使用它的智能手机的唯一标识符(例如,mac地址)。我所看到的大部分方法都是基于cookie / IP的,但是在我的情况下这没有用,因为我试图将原生Android应用程序的使用与其对应的webapp的使用相匹配。

那么,这甚至可能吗?如果是,我应该使用哪种技术进行webapp开发?

谢谢!

2 个答案:

答案 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,则上述操作将无效。

我希望能有所帮助。