从该应用访问应用的安装量

时间:2015-04-08 17:15:01

标签: java android

是否可以从该应用访问应用的确切安装量? 我想“奖励”下载我的应用程序的前100个人。

我可以自己做,使用数据库,每当有人第一次启动应用程序时增加,但我想知道这样的东西是否已经存在,到目前为止我找不到任何东西。

1 个答案:

答案 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名之一。