4

In-App-Billing v3 是在我的 Android 应用程序中实现的,它的助手。

当没有网络时,我在开始购买后卡在一个难看的灰色屏幕上。

有没有办法在我们的应用程序中处理这个问题?

目前,当我没有从商店收到 SKU 详细信息时,我会在启动时禁用购买。但是,启动后连接可能会发生变化。我还没有找到知道 Google Play 服务是否可用的方法。

谢谢你的帮助!

在此处输入图像描述

类似问题:应用内计费 V3 超时返回哪个响应代码?

4

3 回答 3

7

新的 Google Play 应用程序 v4.0.25 现在可以正确处理此问题:

GPlay IAP:无连接

于 2013-04-13T19:12:00.347 回答
5

就像 NIkolay 建议的那样,一种解决方法可能是在发起请求之前检查连接性。

如果您想尝试一下,这里有一段代码可以帮助您;

  1. 首先,您需要为您的 AndroidManifest.xml 文件添加一些权限;特别是android.permission.ACCESS_NETWORK_STATEandroid.permission.ACCESS_WIFI_STATE

    访问ConnectivityManager(一般用于网络连接)需要 ACCESS_NETWORK_STATE,而ACCESS_WIFI_STATE允许访问WifiManager(用于管理 Wi-Fi 连接)。

    <!-- Needed for Reachability testing / wifi vs 3g uploading -->
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
  2. 二、查看此方法判断网络状态

    public static boolean isNetworkAvailable(Context context) {
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        if (null == netInfo || !netInfo.isConnected()) {
            return false;
        }
        return true;
    }
    
于 2013-02-18T08:26:14.500 回答
0

不幸的是,到目前为止,所有提议的解决方案都需要在启动支付请求之前检查网络连接,这会在用户连接时提供明显的不必要延迟,并且在用户未连接时提供更长的延迟(等待超时) ,或者,需要并非所有应用程序都需要的权限。另外,如前所述,存在错误识别网络连接缺失(或存在)的危险。

此外,某些版本的 Google Play(至少对于某些版本的 Android)已经正确处理了网络连接不足的问题(例如,Nexus7 显示了一个标题为“错误”的对话框,其中包含文本“无连接”,正如人们所期望的那样) . 而且,由于更新 Google Play 应用程序的过程是自动化的,因此有些希望 Google 最终会针对当前展示它的应用程序版本解决这个问题,并且当它这样做时,具有激进解决方案的应用程序将希望拥有这些解决方案被删除,并且在他们这样做之前将有不必要的开销。

鉴于上述情况,最好的解决方案可能是在对话框或视图中添加一些突出显示的文本,该对话框或视图包含用户用于启动购买的按钮,说

“请确保您的设备已连接到互联网。如果遇到任何问题,请点击返回按钮。”

在灰屏上点击后退按钮似乎会导致屏幕消失,并导致 onActivityResult() 被 RESULT_CANCELED 调用,就像用户从支付对话框中取消一样。这样就可以让用户摆脱灰屏。

尽管这种方法技术含量很低,但对我来说,它似乎是众多糟糕选择中的最佳选择。

于 2013-02-27T15:26:32.317 回答