google play 内购数据拉取
Posted Foto_cjShow
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了google play 内购数据拉取相关的知识,希望对你有一定的参考价值。
拉取 google play console后台内购数据收入。
1:查看官方文档:
https://support.google.com/googleplay/android-developer/answer/6135870?visit_id=638180953496505768-3845517287&p=stats_export&rd=1#export
这里采用 从Google Cloud Storage 下载报表-》使用用户端程式库和服务帐户下载报表
2:准备工作。
1; 从文档的步骤开始,新建立项目。注意是google developers console后台,不是google play console后台。新建项目,在 IAM和管理中-》添加一个服务账号-》生成秘钥。下载的json文件保留。
2;添加权限。需要将这里添加的服务账号邮件添加到 goole play console 后台, 权限需要有能下载报表的权限。
3:Storage sdk初始化
文档中表示,google play console后台的内购收入会每天往Google Cloud Storage的某个zip包添加数据,
我们需要从storage中下载zip包,解析里面的数据就行。通过上面的关联,我们可以通过新建的google cloud账号api去下载google play每天更新的storage中的zip.
在后台开启api权限
添加storage SDK 参考:https://cloud.google.com/storage/docs/reference/libraries#client-libraries-install-java
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>26.13.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
storage初始化:
public void initApay() String projectId = "pc-api-8153";//准备工作中那个新建项目的id-- projectId InputStream is = AndroidPayHelper.class.getResourceAsStream("/firebaseauth/pay_android_key.json");//下载的json文件 try GoogleCredentials credentials = GoogleCredentials.fromStream(is) .createScoped(Lists.newArrayList("https://www.googleapis.com/auth/devstorage.read_only")); Storage storage = StorageOptions.newBuilder() .setCredentials(credentials) .setProjectId(projectId) .build() .getService(); catch (IOException e) System.out.println(e);
4:数据拉取
参考:https://cloud.google.com/storage/docs/downloading-objects?hl=zh-CN#storage-download-object-java
1,google play 后台查看storage的url和bucket:类似-- gs://pubsite_prod_8153303996/sales/
,
2,得到的是 gs://pubsite_prod_8153303996/sales/ 其中pubsite_prod_8153303996 就是bucketName(注意:这个是复制出来的,跟前面项目的projectId不是一个)。展示一下storage下面的文件。
String bucketName = "pubsite_prod_8153303996"; Page<Blob> buckets = storage.list(bucketName); for (Blob bucket : buckets.iterateAll()) System.out.println(bucket.getName());
打印出来的会有很多,只需要注意 sales开头的就行:这些就是需要下载的内购数据。
sales/salesreport_202302.zip
sales/salesreport_202303.zip
sales/salesreport_202304.zip
3,zip数据下载
String bucketName = "pubsite_prod_8153303996"; BlobId blobId = BlobId.of(bucketName, "sales/salesreport_202304.zip"); Blob blob = storage.get(blobId); byte[] content = blob.getContent(); try byte[] bytes = GzipUtils.unZip(content); String body = new String(bytes, StandardCharsets.UTF_8); putData(body); catch (Exception e) TaskLoggerUtil.Error(className + " unzip error:", e);
4,下载的锁zip包,需要解析:
public static byte[] unZip(byte[] data) throws IOException byte[] b = null; ByteArrayInputStream bis = new ByteArrayInputStream(data); ZipInputStream zip = new ZipInputStream(bis); while (zip.getNextEntry() != null) byte[] buf = new byte[1024]; int num = -1; ByteArrayOutputStream baos = new ByteArrayOutputStream(); while ((num = zip.read(buf, 0, buf.length)) != -1) baos.write(buf, 0, num); b = baos.toByteArray(); baos.flush(); baos.close(); zip.close(); bis.close(); return b;
5,分析数据
String cDate = "2023-04-23";//表里的数据是这个月所有数据,如果只需要一天的,需要筛选 String[] separated = datas.split("\\n");//拆分行 int len = separated.length; for (int i = 1; i < len; i++) String[] row = separated[i].split(",");//拆分列,每一行数据是通过,组成的 //日期 String date = DateUtils.dateConvertionYs(String.valueOf(row[1]));//这里是将yyyy/MM/dd转为yyyy-MM-dd方便比较 if (!cDate.equals(date)) continue; String packId = row[6];//包名 //收益 float proceeds = Float.parseFloat(row[12]);//收入
5:展示数据
数据跟ios一样,需要自己通过汇率转为一种货币,方便计算。
https://cloud.google.com/storage/docs/downloading-objects?hl=zh-CN#storage-download-object-java
怎么切换google play 地区
切换方法如下:
1、商店内,点击三,如下。
2、接下来需要点击【账号】,如下。
3、接下来需要点击账号偏好设置,如下。
4、点击【添加信用卡或借记卡】,如下。
5、点继续,即可将你的国家地区切换为日本。
6、切换之后效果如下,商店都是日本地区了的。注意一年之内只可以切换一次,官方说法。
参考技术Agoogle play的地区是根据访问的ip自动识别的,故按照如下步骤操作:
1,清空google play商店缓存数据
2,重新连接目标地区IP的vpn
3,重新打开登陆google play商店即可
具体操作方法如下:
1,清空缓存:应用程序管理内找到google play商店,删除数据,如下图
2,连接目标地区对应的ip地址
①获取ip方法:
vpn运营商的官网“用户中心”内
②配置vpn的方法:ip部分选择获取的目标地区的ip即可
③连接成功如下:
3,重新登陆google play商店即可
参考技术B如果你的你在Google play商店没有消费,既购买APP、下载免费书、免费音乐的话,你是可以更改你的Play商店地区的,否则不能更改,如需更改,参见以下步骤:
准备好你所使用国家的VPN,保持网络通畅
清除Google Play Store、Google Services数据及Cache
重新使用你所要更改Play地区的Google账户登录Play Store
选择娱乐当中的数据,随便选择一本免费书籍下载,待下载成功后,你的Play国家就会被绑定,以後不可再更改
1:进入“系统设置”-“管理账户”-“添加账户”-选“google”-“下一步”-选择“创建”或“登录”。
2:登陆完成后退出系统设置,打开google play,在左上角的购物袋图标旁切换gmail账户。本回答被提问者采纳 参考技术D 可以按以下步骤操作:
1:进入“系统设置”-“管理账户”-“添加账户”-选“google”-“下一步”-选择“创建”或“登录”。
2:登陆完成后退出系统设置,打开google play,在左上角的购物袋图标旁切换gmail账户。
以上是关于google play 内购数据拉取的主要内容,如果未能解决你的问题,请参考以下文章