小编Ste*_*enT的帖子

Play Billing Library v1.0:queryPurchases 结果中缺少续订订阅

我有一个 Android 应用程序,使用https://developer.android.com/google/play/billing/billing_library.html通过应用内计费提供自动续订订阅。

我正在使用https://github.com/googlesamples/android-play-billing/ 中稍作修改的 BillingManager.java来帮助进行采购管理。

以前,在发布之前(大约 4-8 周前),每当订阅试用结束并且订阅自动续订时,我会在查询购买时继续在购买列表中收到相应的购买对象:

PurchasesResult subscriptionResult = mBillingClient.queryPurchases(SkuType.SUBS);
List<Purchase> list = purchasesResult.getPurchasesList();
Run Code Online (Sandbox Code Playgroud)

(请参阅此处的查询购买

将订单有根据自原来的顺序所发生的(在订阅订购号所描述的续期数所附递增的计数器值在这里)。

在最近几天,似乎每当客户的订阅从试用转换为付费,或随后续订时,queryPurchases此后返回购买。我希望为具有活动订阅的用户收到一个 Purchase 对象(并且在不久前的测试过程中得到了这个 - 我在我的数据库中有数据来确认它。)

因此,该应用程序不再调用我们的后端服务器来更新订阅有效性,并且用户被拒绝访问他们已付费的功能 - 不是很好。

我可以在 Google Play Console 上查看客户的订单(带有递增的 OrderID),并且订阅显示为有效(并且没有取消)并且购买令牌可用并且可以进行验证。

有谁知道为什么 queryPurchases 在第一次续订后会停止返回有效的购买?(购买在续订日期之前按预期退回。)

我正在使用当前的计费客户端库,如下所示:

implementation 'com.android.billingclient:billing:1.0'
Run Code Online (Sandbox Code Playgroud)

(作为一种解决方法,我可以通过定期重新检查所有提交的购买令牌在后端解决此问题,但我更愿意根据应用程序触发的需求来执行此操作,这在之前运行良好。)

android in-app-billing in-app-subscription

5
推荐指数
0
解决办法
342
查看次数

iOS 12 中的视图层次结构中缺少 searchBar

我有一个 UISearchController 和 searchBar 分配给我的视图控制器的导航项。在 iOS 13.3 中一切正常。但是,在 iOS 12.4 中,searchBar 缺失并且似乎尚未添加到视图层次结构中。

这是 iOS 13.3 中的 UI:

在此处输入图片说明

在 iOS 12.4 中也是如此:

在此处输入图片说明

我配置搜索控制器的代码如下:

self.searchController = [[UISearchController alloc] initWithSearchResultsController:nil];
self.searchController.searchResultsUpdater = self;
self.searchController.obscuresBackgroundDuringPresentation = NO;

NSString *placeholder = NSLocalizedString(@"Address or place name", nil);

self.searchController.searchBar.placeholder = placeholder;
self.searchController.searchBar.autocapitalizationType = UITextAutocapitalizationTypeNone;
self.searchController.searchBar.autocorrectionType = UITextAutocorrectionTypeNo;
self.searchController.searchBar.delegate = self;

self.definesPresentationContext = YES;

self.navigationItem.hidesSearchBarWhenScrolling = NO;
self.navigationItem.searchController = self.searchController;

[self.searchController.searchBar sizeToFit];
Run Code Online (Sandbox Code Playgroud)

如果我通过在调试器中输入以下内容来检查 searchBar 的视图层次结构:

po self.navigationItem.searchController.searchBar.superview.superview
Run Code Online (Sandbox Code Playgroud)

我在 iOS 13.3 中看到以下内容:

<UILayoutContainerView: 0x7f8c97b300c0; frame = (0 0; 375 …
Run Code Online (Sandbox Code Playgroud)

interface-builder uisearchbar uinavigationitem ios uisearchcontroller

5
推荐指数
2
解决办法
945
查看次数

StoreKit2 相当于 SKPaymentQueue.presentCodeRedemptionSheet()

我在新的 iOS 应用程序中使用StoreKit2来处理应用程序内订阅购买。我想支持在应用程序中兑换优惠代码,但我不知道如何使用 StoreKit2 实现这一点。

是否有相当于原始 StoreKit 的SKPaymentQueue.presentCodeRedemptionSheet()的 StoreKit2 ?

我在文档中没有看到任何专门处理优惠代码的内容。虽然有这样的:

static func promotionalOffer(offerID: String, keyID: String, nonce: UUID, signature: Data, timestamp: Int) -> Product.PurchaseOption
Run Code Online (Sandbox Code Playgroud)

我的理解是,促销优惠与优惠代码是分开的。

感谢任何人提供的有关如何允许使用 StoreKit2 在应用程序内兑换优惠代码的任何指示。我假设我不应该包含原始 StoreKit 以及 StoreKit2 并调用旧的 API,对吗?

app-store storekit in-app-purchase ios

5
推荐指数
1
解决办法
1058
查看次数