Even if I start a request for SKProductsRequest, didReceiveResponse, didFailWithError, and requestDidFinish are not called.
The first request successfully called didReceiveResponse and requestDidFinish.
However, didReceiveResponse, didFailWithError, and requestDidFinish are not called in the second and subsequent requests.
About 12 hours after the second request, when I started the request again, didReceiveResponse and requestDidFinish was called normally.
However, when I started the request immediately afterwards, didReceiveResponse, didFailWithError, and requestDidFinish were no longer called again.
I kept the SKProductsRequest as a strong reference and executed the start of the request.
https://developer.apple.com/documentation/storekit/skproductsrequest
Objective-c Code:
//SKProductsRequest request
@property (strong, nonatomic) SKProductsRequest *request;
_request = [[SKProductsRequest alloc] initWithProductIdentifiers:[NSSet setWithArray:_productIdentifiers]];
_request.delegate = self;
[_request start];
- (void)productsRequest:(SKProductsRequest *)request didReceiveResponse:(SKProductsResponse *)response
{
}
- (void)requestDidFinish:(SKRequest *)request
{
}
- (void)request:(SKRequest *)request didFailWithError:(NSError *)error
{
}
- (void)paymentQueue:(SKPaymentQueue *)queue updatedTransactions:(NSArray *)transactions
{
}
The following log is displayed in the console log of Xcode.
[BackgroundTask] Background Task 8 ("SKProductsRequest"), was created over 30 seconds ago. In applications running in the background, this creates a risk of termination. Remember to call UIApplication.endBackgroundTask(_:) for your task in a timely manner to avoid this.
This phenomenon occurred in the following operating environment.
Xcode 13.0
iPhone 11 Pro / iOS 15.0
Deploy target iOS 13.0
SAND-BOX
This phenomenon did not occur in the following operating environment.
Xcode 12.5.1
iPhone 11 Pro / iOS 14.5
Deploy target iOS 12.3
SAND-BOX
This method is called after all processing of the request has been completed. Typically, subclasses of SKRequest require the delegate to implement additional methods to receive the response. When this method is called, your delegate receives no further communication from the request and can release it.
https://developer.apple.com/documentation/storekit/skrequestdelegate/1385532-requestdidfinish
The documentation states that the request can be released after the delegate is called. What does that mean? Is this the phenomenon that the next request is not processed until the unreleased request expires?