是否可以从该应用访问应用的确切安装量? 我想“奖励”下载我的应用程序的前100个人。
我可以自己做,使用数据库,每当有人第一次启动应用程序时增加,但我想知道这样的东西是否已经存在,到目前为止我找不到任何东西。
答案 0 :(得分:0)
完成! 我试过Parse,但它似乎没有任何领先优势,所以我决定去一个远程数据库。
我不熟悉PHP并连接到远程服务器,因此可能会出现一些错误。但到目前为止它完成了工作,即使有时它会卡住,除了关闭应用程序之外没有办法解开它。我不知道这是否来自我所犯的错误,或者是因为我使用便宜且可能不稳定的服务器来测试它。仍然可以建议任何改进可以考虑一下。
Android:
@Override
public boolean isFirst1000() {
byte[] data;
HttpPost httppost;
StringBuffer buffer = new StringBuffer();
HttpResponse response;
HttpClient httpclient;
InputStream inputStream;
try {
httpclient = new DefaultHttpClient();
httppost = new HttpPost(
"http://jaimebeaucouplepain.com/first1000.php");
response = httpclient.execute(httppost);
inputStream = response.getEntity().getContent();
data = new byte[256];
buffer = new StringBuffer();
int len = 0;
while (-1 != (len = inputStream.read(data))) {
buffer.append(new String(data, 0, len));
}
inputStream.close();
}
catch (Exception e) {
return false;
}
String str = buffer.toString();
if (str.contains("first1000yes")) {
return true; // The user is one of the first 1000. We don't have to check again.
}
else if (str.contains("first1000no")) {
return false; // The user is not one of the first 1000. We don't have to check again.
}
else {
return false; // There was an error with the server. We will have to check again (next time the user launches the app for example).
}
}
PHP:
<?php
require("config.inc.php");
try {
$result = $db->query("SELECT COUNT(*) FROM first1000");
$row = $result->fetch();
$nbUsers = $row["COUNT(*)"];
}
catch (PDOException $ex) {
$response = "Database Error.";
die(json_encode($response));
}
if ($nbUsers < 1000) {
$query = "INSERT INTO first1000 (id) VALUES (DEFAULT)";
try {
$stmt = $db->prepare($query);
$result = $stmt->execute();
}
catch (PDOException $ex) {
$response = "Database Error.";
die(json_encode($response));
}
$response = first1000yes;
echo $nbUsers;
echo json_encode($response);
}
else {
$response = first1000no;
echo json_encode($response);
}
?>
以下是它的工作原理。每当玩家第一次启动应用程序时,我们都会检查数据库。如果已有1000个条目,则表示当前用户不是前1000个中的一个,不应该获得奖励。否则,我们添加一个条目并奖励玩家。然后,我们确保每次玩家启动应用时都不会检查,因为播放器的数量不会随着时间的推移而缩小。
我们可以在完成后使用prefs.putBoolean("checkFirst1000", true)
之类的偏好。
如果在此过程中出现错误(例如没有互联网),我们就无法奖励玩家。但是我们不打电话给prefs.putBoolean("checkFirst1000", true)
,因为我们想要下次检查,每次都要确认玩家是否是前1000名之一。