这是一个与应用程序无关的问题,但我想得到一个更好的答案。
跟踪用户完成挑战或目标的最佳设置是什么?类似于堆栈溢出,如果你击中了某个目标,就会获得一个徽章。
目前,我是一个网站和附加Facebook应用程序的开发人员。我想知道跟踪已完成挑战的最佳方法。目前,我有一行代码散布在实际的控制器代码中,这可能不是最好的方法。如下所示:
if ($upload_photo == true) {
$challenge->perform(1);
}
正如你所看到的,上面基本上是在
perform()
方法(的
Challenge
类),它有一个数据库查询,查看到目前为止是否满足了挑战阈值,如果没有,则插入一条记录,并将与该挑战相关联的点数记入成员的贷方。为此设置的数据库很简单,如下所示:
member_id INT
challenge_id INT
为了得到成员执行特定挑战的次数,我只运行了一个
COUNT (*) AS count FROM table_name WHERE member_id = ? AND challenge_id = ?
查询。
但这是最好的安排吗?我不这么认为,并且愿意回答如何改进这一设置。
如前所述,我还负责开发与此网站相关联的Facebook应用程序。将有一个进度条,允许用户执行某些操作并获得奖励。例如,为应用程序添加书签;喜欢应用程序;向Facebook好友推荐应用程序。
使用facebook的php-sdk,我可以查询这些操作是否已经完成。没问题。我的问题出现在将离开应用程序,然后在会话过期后返回的用户身上。当一个操作被执行时,我应该将它作为一个记录存储在数据库表中,并在用户登录到应用程序时查询数据库吗?或者我应该在登录时进行检查,并将结果存储在会话中,在触发relavant操作时覆盖relavant会话键吗?
欢迎对该设置提出任何改进建议。提前谢谢。