3

我正在使用 Android Billing API V3 从 Play 商店查询购买信息。我想知道是否可以清除本地缓存。

V3 为计费 API 添加了本地缓存功能,以减少网络流量。我有一个每天运行的更新服务,它更新我的元数据,由于我在我的应用程序中显示成本,我希望刷新本地缓存并触发更新,以防我更新了价格以确保显示正确的价格。

文档说:

由于 Google Play 客户端现在在设备本地缓存应用内结算信息,因此您可以使用版本 3 API 更频繁地查询此信息,例如通过 getPurchases 调用。与以前版本的 API 不同,许多第 3 版 API 调用将通过缓存查找而不是通过与 Google Play 的网络连接来提供服务,这显着加快了 API 的响应时间。

4

3 回答 3

1

您必须知道,Android 应用内购买一次购买只允许一位用户在其生命周期内购买一次。如果您再次想要它,您必须提出请求或在游戏控制台中创建新产品。有关更多信息,请访问此链接。

https://developer.android.com/google/play/billing/billing_onetime

于 2018-12-07T14:51:51.703 回答
0

尝试这个 :

添加此类Application

package com.hrupin.cleaner;

import java.io.File;

import android.app.Application;
import android.util.Log;

public class MyApplication extends Application {
    private static MyApplication instance;

    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
    }

    public static MyApplication getInstance() {
        return instance;
    }

    public void clearApplicationData() {
        File cache = getCacheDir();
        File appDir = new File(cache.getParent());
        if (appDir.exists()) {
            String[] children = appDir.list();
            for (String s : children) {
                if (!s.equals("lib")) {
                    deleteDir(new File(appDir, s));
                    Log.i("TAG", "**************** File /data/data/APP_PACKAGE/" + s + " DELETED *******************");
                }
            }
        }
    }

    public static boolean deleteDir(File dir) {
        if (dir != null && dir.isDirectory()) {
            String[] children = dir.list();
            for (int i = 0; i < children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }

        return dir.delete();
    }
}

然后,从 any 拨打此电话Activity

MyApplication.getInstance().clearApplicationData();

参考 :

如何以编程方式清除 Android 应用程序中的用户数据

谢谢。

于 2013-01-16T09:09:20.717 回答
0

不幸的是,Google Play 客户端是执行缓存的应用程序,并且没有公开用于清除缓存的 API。

我不明白你为什么要清除缓存?Google Play 客户端会收到任何更改的通知,因此会相应地使其缓存无效。假设返回的调用是正确的。

于 2013-01-22T11:34:36.593 回答