3

我有这种情况,我们的内部应用程序正在捕获用户使用的所有应用程序,并将列表上传到我们的云服务器,我需要在 Play 商店中按“类别”对它们进行分类。

如果 android 代码还可以通过包名称找到应用程序的类别会更好,但看起来我的开发人员在 android 端这样做时遇到了问题。

我们如何仅使用其包名来找出应用程序的类别?

4

2 回答 2

3

让我们只选择一个包名“com.facebook.katana”,然后用谷歌搜索它。

第一个结果(如果它是一个有效的 android 应用程序)将是播放 url,例如 - https://play.google.com/store/apps/details?id=com.facebook.katana,让我们点击这个 url 并查看它的来源。

像这样的跨度有我们需要的 -

<span itemprop="genre">Social</span>

现在让我们用 php 编写一个脏索引游戏来获取我们包的类型或类别,我希望你们都觉得它很容易理解,因为它不是火箭科学

该代码可在此处获得https://gist.github.com/brijrajsingh/6915711 并在下面给出。

注意 - 我还建议,一旦你有了一个包名称的类别,你最好将它存储在一些 db 或 memcache 中,所以你不需要一次又一次地点击它来获取差异包,如果代码可能会停止运行你轰炸了谷歌服务器,所以放轻松。

<?php

class PackageCategory
{

  protected static $playurl = 'https://play.google.com/store/apps/details?id=';

  public function PackageCategory($packageName) {
        $this->packageName = $packageName;
    }

    public function getPackageCategory()
    {       
        $result = $this->makeRequest(self::$playurl.$this->packageName);        
        //starting index of category tag
        $indexstart = strpos($result,"<span itemprop=\"genre\">");

        //ending index of category tag
        $indexend = strpos($result,"</span>",$indexstart);

        $category = substr($result,$indexstart+23,$indexend - ($indexstart+23));
        echo $category;
    }

//curl to the play store
 /**
     * Makes request to AWIS
     * @param String $url   URL to make request to
     * @return String       Result of request
     */
    protected function makeRequest($url) {
        //echo "\nMaking request to:\n$url\n";
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_TIMEOUT, 4);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
        $result = curl_exec($ch);
        curl_close($ch);
        return $result;
    }

}


    if (count($argv) < 2) {
    echo "Usage: $argv[0] PackageName\n";
    exit(-1);
}
else {
    $packageName = $argv[1];   
}

$packageCategory = new PackageCategory($packageName);
$packageCategory->getPackageCategory();

 ?>
于 2013-10-10T09:43:14.357 回答
1

是的,似乎有一种方法:

由于您已经找到了应用程序包的名称。

您可以使用这个非官方的 googleplay api 来获取您需要的有关应用程序的信息。

于 2013-10-10T09:51:53.370 回答