我为 Windows 8 商店开发了一个简单的免费游戏,现在我想请我的用户给游戏打分,并可能给它写评论。
我如何检查他们是否已经这样做了(即对游戏进行评分或写了评论),所以我不再问了?
我为 Windows 8 商店开发了一个简单的免费游戏,现在我想请我的用户给游戏打分,并可能给它写评论。
我如何检查他们是否已经这样做了(即对游戏进行评分或写了评论),所以我不再问了?
您可以访问如下所述的商店信息,包括评论和有关撰写评论的用户的数据。然后,您可以尝试将该信息与通过 Live SDK 为当前用户提供的用户信息进行匹配。您将只能匹配 FirstName LastName,没有可用的通用唯一 ID,或者可能存在,用户图像图标 URL 可能在两者之间匹配,但我尚未验证。
http://jasonthomascarter.blogspot.com/2013/08/the-friendly-developers-guide-to.html
今天,我收到了一位开发人员对我的一个 Windows 应用商店应用程序轮盘赌的支持电子邮件的询问。这非常令人耳目一新,而且我非常愿意与其他开发人员分享信息。我更兴奋的是看到他们将创造什么,而不是担心竞争的潜力。所以在这里和大家分享一下。无论如何,这位开发人员想知道如何获取此应用程序信息,我将解释我如何访问该信息以及您也可以如何访问。
首先是一点自我宣传,除了 App Roulette,我在其他一些应用程序中使用了这些信息。Developer Dashboard 一站式商店,可查看来自所有国家/地区的所有应用程序评论,只需轻按一下即可翻译每条评论,Windows Store Developers Windows 商店中所有开发人员(超过 10000 名)及其应用程序的目录,最活跃Reviewers 最多产的应用程序评论者及其评论的目录,在我自己的投资组合应用程序软件开发人员中列出了我在 Windows 应用商店中发布的所有其他应用程序,请尝试其中的一些。
开始了!首先,我们将从 Windows Store 网站的 Robots.txt 文件开始。http://apps.microsoft.com/robots.txt
网站使用 robots.txt 来指导网络爬虫如何表现、他们希望他们看到什么以及他们不希望他们看到什么。
Web 机器人(也称为 Web Wanderers、Crawlers 或 Spiders)是自动遍历 Web 的程序。谷歌等搜索引擎使用它们来索引网络内容,垃圾邮件发送者使用它们来扫描电子邮件地址,它们还有许多其他用途。
在这种情况下,我们感兴趣的是 Sitemaps.xml 索引文件。http://apps.microsoft.com/windows/sitemap_index.xml
站点地图是网站管理员通知搜索引擎有关其网站上可供抓取的页面的一种简便方法。在最简单的形式中,站点地图是一个 XML 文件,其中列出了站点的 URL 以及有关每个 URL 的附加元数据(上次更新时间、更改频率以及相对于站点中其他 URL 的重要性) ) 以便搜索引擎可以更智能地抓取网站。
站点地图索引文件列出了每个单独的站点地图 XML 文件。在撰写本文时,apps.microsoft.com 网站有 141 个单独的站点地图 XML 文件。
在各个文件中包含数千个指向 Windows 应用商店应用网页的 URL。例如 PlayTo Receiver 应用程序的 URL:http: //apps.microsoft.com/windows/en-us/app/playto-receiver/72a6ba17-2d4e-4a1c-bcfb-cdc5d4b32d0e
这些应用程序的网页确实包含一些我们可以从 HTML 中抓取的信息,但我们可以做得更好......我们在这里获得的关键信息是应用程序 ID 以及这些应用程序 ID 发布到的地理区域店铺。例如:72a6ba17-2d4e-4a1c-bcfb-cdc5d4b32d0e 和 en-us 等...
现在到了好东西,我们可以使用我们新发现的 App Id 和地理信息调用一些 Web 服务。
通过此 Web 服务可以获得大量信息,但元素名称并没有清楚地说明这些信息。这是我对其中许多(不是全部)的解释,以帮助您入门。
sSubCategoryName = rawXML.getElementsByTagName('Sc')[0].getElementsByTagName('N')[0].childNodes[0].nodeValue; sSubCategoryId = rawXML.getElementsByTagName('Sc')[0].getElementsByTagName('I')[0].childNodes[0].nodeValue; sHasTrial = rawXML.getElementsByTagName('Try')[0].childNodes[0].nodeValue; sDescription = rawXML.getElementsByTagName('D')[0].childNodes[0].nodeValue; sDeveloper = rawXML.getElementsByTagName('Dev')[0].childNodes[0].nodeValue; sWebsite = rawXML.getElementsByTagName('Ws')[0].childNodes[0].nodeValue; sSupport = rawXML.getElementsByTagName('Sws')[0].childNodes[0].nodeValue; sPrivacy = rawXML.getElementsByTagName('Pu')[0].childNodes[0].nodeValue; sCategoryName = rawXML.getElementsByTagName('C')[0].getElementsByTagName('N')[0].childNodes[0]。节点值;sCategoryId = rawXML.getElementsByTagName('C')[0].getElementsByTagName('I')[0].childNodes[0].nodeValue; sPrice = rawXML.getElementsByTagName('P')[0].childNodes[0].nodeValue; sForegroundColor = rawXML.getElementsByTagName('Fg')[0].childNodes[0].nodeValue; sBackgroundColor = rawXML.getElementsByTagName('Bg')[0].childNodes[0].nodeValue; sAppIcon = rawXML.getElementsByTagName('Ico')[0].childNodes[0].nodeValue; sAppName = rawXML.getElementsByTagName('T')[0].childNodes[0].nodeValue; sPackageFamilyName = rawXML.getElementsByTagName('Pfn')[0].childNodes[0].nodeValue; sResourceId = rawXML.getElementsByTagName('R')[0].childNodes[0].nodeValue; sId = rawXML.getElementsByTagName('I')[0].childNodes[0].nodeValue; sCapabilities = sCapabilities + arrCapabilities[k]。childNodes[0].nodeValue+","; sUpdate = rawXML.getElementsByTagName('Ud')[0].childNodes[0].nodeValue; sFeatures1 = rawXML.getElementsByTagName('Dbp')[0].childNodes[0].nodeValue; sFeatures2 = rawXML.getElementsByTagName('Dbp')[1].childNodes[0].nodeValue; sFeatures3 = rawXML.getElementsByTagName('Dbp')[2].childNodes[0].nodeValue; sFeatures4 = rawXML.getElementsByTagName('Dbp')[3].childNodes[0].nodeValue; sFeatures5 = rawXML.getElementsByTagName('Dbp')[4].childNodes[0].nodeValue; sFeatures6 = rawXML.getElementsByTagName('Dbp')[5].childNodes[0].nodeValue; sFeatures7 = rawXML.getElementsByTagName('Dbp')[6].childNodes[0].nodeValue; sFeatures8 = rawXML.getElementsByTagName('Dbp')[7].childNodes[0].nodeValue; sFeatures9 = rawXML.getElementsByTagName('Dbp')[8]。childNodes[0].nodeValue; sScreenshot1 = rawXML.getElementsByTagName('Ss')[0].getElementsByTagName('U')[0].childNodes[0].nodeValue sScreenshot2 = rawXML.getElementsByTagName('Ss')[1].getElementsByTagName('U') [0].childNodes[0].nodeValue sScreenshot3 = rawXML.getElementsByTagName('Ss')[2].getElementsByTagName('U')[0].childNodes[0].nodeValue sScreenshot4 = rawXML.getElementsByTagName('Ss') [3].getElementsByTagName('U')[0].childNodes[0].nodeValue sScreenshot5 = rawXML.getElementsByTagName('Ss')[4].getElementsByTagName('U')[0].childNodes[0].nodeValue sScreenshot6 = rawXML.getElementsByTagName('Ss')[5].getElementsByTagName('U')[0].childNodes[0].nodeValue sScreenshot7 = rawXML.getElementsByTagName('Ss')[6].getElementsByTagName('U') [0]。
Windows 应用商店不仅仅是应用程序,还有评论,而且还有很多。目前,Windows 应用商店中有超过 210,000 条应用评论。这些评论来自世界各地,所以你需要一些国家代码,你方便的花花公子 App Id 并注意最后的 pn/1,你会发现这个服务每页只返回 10 条评论,只是增加将此值设置为 pn/2、pn/3 等。直到您的评论用完。
var arrCountryCodes = [“AE”、“AR”、“AT”、“AU”、“BE”、“BG”、“BH”、“CA”、“CH”、“CL”、“CN”、“CO "、"CR"、"CY"、"CZ"、"DE"、"DK"、"DZ"、"EE"、"EG"、"ES"、"FI"、"FR"、"GB"、 “GR”、“HK”、“HR”、“HU”、“ID”、“IE”、“IL”、“IN”、“IQ”、“IT”、“JO”、“JP”、“KW” "、"KZ"、"LB"、"LK"、"LT"、"LU"、"LV"、"LY"、"MA"、"MT"、"MX"、"MY"、"NL"、 “否”、“新西兰”、“OM”、“PE”、“PH”、“PK”、“PL”、“QA”、“RO”、“RS”、“RU”、“SA”、“SE”、“SG”、“SI”、“SK” "、"TH"、"TN"、"TR"、"TT"、"UA"、"US"、"UY"、"VE"、"VN"];
这个对元素名称的描述性更强,所以我认为不需要进一步解释。您可以看到全名、显示名称、用户选择用来代表自己的图像。
接下来我们可以做一些搜索...... https://services.apps.microsoft.com/search/6.2.9200-1/615/en-US_en-US/m/US/c/US/il /en-US/cp/10005001/query/cid/0/pf/1/pc/0/pt/x64/af/0/lf/0/s/0/2/pn/0?phrase=软件开发人员
在这里它再次变得有点神秘,但现在你应该已经习惯了。您可以从 I 元素获取 App ID 并将其从那里带回浏览服务f514d64b-8705-43b7-a400-c4f4f3dedfc0
至此,您已经掌握了从 Windows 应用商店中提取大量信息的基础知识,然后您就可以随心所欲了。如果您发现这很有用和/或利用这些信息制作了一些应用程序,请分享一些额外的信息,否则请在评论中告诉我。
似乎没有 API 可以执行此操作。如果有的话,它可能是CurrentApp类的一部分,它会告诉你应用程序是否已被购买等信息。
如果您想提示用户填写评分(他们可能已经完成),您可以按照此线程中概述的说明进行操作:
我喜欢最后一条消息,它向您展示了如何直接链接到评论选项卡。
贾里德几乎已经做到了。我不认为你可以,除非有一个 Windows Store API 为你的应用程序提供该信息。用户信息和他/她的评分和评论状态和数据存储在您的应用程序之外,因此您必须查询外部数据源(在本例中为 Windows 应用商店)以了解他或她是否已经对您的应用程序进行了评分和评论。当前版本的Windows 应用商店 API不提供对该信息的直接访问。
这是一种简单但不那么准确的解决方法。如果用户没有提供反馈,您可以提醒他们提供反馈,方法是提供一个链接到评论网页的按钮,并在您的应用程序中提供一个快速是/否问题并将答案存储在本地。在一个完美的世界里,用户已经完成了审查并且他/她对您的问题回答是,并且他们不会被另一个提醒所困扰。