我有这种情况,我们的内部应用程序正在捕获用户使用的所有应用程序,并将列表上传到我们的云服务器,我需要在 Play 商店中按“类别”对它们进行分类。
如果 android 代码还可以通过包名称找到应用程序的类别会更好,但看起来我的开发人员在 android 端这样做时遇到了问题。
我们如何仅使用其包名来找出应用程序的类别?
我有这种情况,我们的内部应用程序正在捕获用户使用的所有应用程序,并将列表上传到我们的云服务器,我需要在 Play 商店中按“类别”对它们进行分类。
如果 android 代码还可以通过包名称找到应用程序的类别会更好,但看起来我的开发人员在 android 端这样做时遇到了问题。
我们如何仅使用其包名来找出应用程序的类别?
让我们只选择一个包名“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();
?>