我的申请中有一次购买。它支持应用程序的所有功能。
当用户在手机上购买sku时...一切正常。我们会看到计费客户端返回的事件,并通过在本地数据库中设置布尔值来记录高级模式的购买。本地谷歌播放缓存已正确更新。
我们的问题是当他们安装在另一台设备上时。想象一下,你想在平板电脑和手机上使用它,或者你丢了手机,又买了一部。
我们一直在使用计费客户端的“查询购买”方法来验证购买。他们安装了该应用程序,我认为此时会将购买历史记录添加到本地缓存中。
一般来说,它是有效的。但不可忽略的是,有相当一部分用户需要多次重启手机,或者从谷歌那里等上几天,才能将他们的@#$%汇总起来,并将购买历史记录添加到他们的缓存中。
他们的文档称该方法只查询本地缓存。https://developer.android.com/reference/com/android/billingclient/api/BillingClient#querypurchases
Google Play开发者API允许使用查询进行购买,但我们需要购买令牌来验证任何东西。如果Google Play因为没有购买记录而无法返回购买令牌。。。我们该怎么办?
其他人是如何处理这个问题的?
queryPurchases
依赖于设备上的缓存。因此,如果用户的设备没有及时更新缓存,您将看到这种行为。为了解决这个问题,你应该在queryPurchaseHistoryAsync中使用queryPurchases,如下所示
override fun onBillingSetupFinished(billingResult: BillingResult) {
when (billingResult.responseCode) {
BillingClient.BillingResponseCode.OK -> {
...
queryPurchasesAsync()
}
...
}
}
fun queryPurchasesAsync() {
val purchasesResult = HashSet<Purchase>()
var result = playStoreBillingClient.queryPurchases(BillingClient.SkuType.INAPP)
if(nullOrEmpty(result)){
queryPurchaseHistoryAsync(...) // response is returned to onPurchaseHistoryResponse
}else{
... // here you add your existing logic to give users access to products and services
}
}
旁白:既然你使用标签google play developer api,你的应用程序有服务器吗?如果是这样,您可以在服务器上设置布尔值,而不是使用本地缓存,并从服务器上获取授权信息。这种方法的优点是,当你的应用程序成为跨平台应用程序时,不管用户是通过Android系统还是网络购买,他们都可以通过与你的服务器进行检查来访问高级内容。
参考:https://github.com/googlesamples/android-play-billing/tree/master/TrivialDriveKotlin
问题内容: 我在我的项目中有一个textarea,用户可以在其中保存SQL查询,但要求之一是检查此查询是否有效 例子 如果用户输入类似: 这应该返回false并显示一条错误消息,提示您不必给出任何原因 主要是查询将只是语句 注意, 我现在不想使用任何服务器端 问题 是否有人知道具有此功能或类似功能的javascript / jquery库或插件 我有谷歌这个,它没有显示任何东西 谢谢 问题答案:
当尝试安装具有较低版本的APK时,最近的Android 4.2似乎在安装时引入了此错误条件。在以前的Android版本中,您只需通过
问题内容: 我需要验证对象是否存在并返回该对象,然后根据该行为执行操作。什么是不返回404的正确方法? 问题答案: 如果你没有得到404,我就不会使用404包装器。这是对意图的滥用。只需捕获DoesNotExist,即可。
问题内容: 我想使用jQuery.validate验证数据库中是否存在用户名,所以这是我到目前为止的内容: jQuery的: check-username.php: 此代码始终显示一个错误,即使没有使用用户名也是如此。 我正在使用jQuery Mobile 1.9.1 提前致谢。 问题答案: 通过更改我使用的PHP技术,我设法使它起作用,这是我的PHP: 谢谢大家在这里的帮助:)
在我们的例子中,我们有两个完全不同的web应用程序运行在两个不同的域和平台上,比如app X(同时充当SAML服务提供商)和app Y。在app X的登录页面中,用户可以选择Okta作为SAML SSO服务提供商,inturn将他重定向到Okta进行凭据验证。然后appx将接收SAML响应以验证断言,并让用户登录到appx。 现在在应用程序X中,已经登录的用户可以单击应用程序Y的另一个链接。单击会