Why can't the app get the subscription status occasionally?

Hi, I have developed an app which has two in-app purchase subscriptions. During the test, the app can successfully get the status of the subscriptions. After it's released, I downloaded it from app store and subscribed it with my apple account. I found that in most cases, the app can identify that I have subscribed it and I can use its all functions. But yesterday, when I launched it again, it showed the warning that I haven't subscribed it. I checked my subscription in my account and the subscription status hasn't been changed, that is, I have subscribed it. And after one hour, I launched it again. This time the app identified that I have subscribed it. Why? The following is the code about listening to the subscription status. Is there any wrong about it?

HomeView()
 .onAppear(){
                    Task {
                        await getSubscriptionStatus()
                    }
                }
func getSubscriptionStatus() async {
        var storeProducts = [Product]()
        do {
                    let productIds = ["6740017137","6740017138"]
                    storeProducts = try await Product.products(for: productIds)
                } catch {
                    print("Failed product request: \(error)")
                }
        guard let subscription1 = storeProducts.first?.subscription else {
                // Not a subscription
                return
            }
            do {
                let statuses = try await subscription1.status

                for status in statuses {
                    let info = try checkVerified(status.renewalInfo)
                    switch status.state {
                    case .subscribed:
                        if info.willAutoRenew {
                          purchaseStatus1 = true
                            debugPrint("getSubscriptionStatus user subscription is active.")
                        } else {
                          purchaseStatus1 = false
                            debugPrint("getSubscriptionStatus user subscription is expiring.")
                        }
                    case .inBillingRetryPeriod:
                        debugPrint("getSubscriptionStatus user subscription is in billing retry period.")
                          purchaseStatus1 = false
                    case .inGracePeriod:
                        debugPrint("getSubscriptionStatus user subscription is in grace period.")
                          purchaseStatus1 = false
                    case .expired:
                        debugPrint("getSubscriptionStatus user subscription is expired.")
                          purchaseStatus1 = false
                    case .revoked:
                        debugPrint("getSubscriptionStatus user subscription was revoked.")
                         purchaseStatus1 = false
                    default:
                        fatalError("getSubscriptionStatus WARNING STATE NOT CONSIDERED.")
                    }
                }
            } catch {
                // do nothing
            }
        
        guard let subscription2 = storeProducts.last?.subscription else {
                // Not a subscription
                return
            }
            do {
                let statuses = try await subscription2.status

                for status in statuses {
                    let info = try checkVerified(status.renewalInfo)
                    switch status.state {
                    case .subscribed:
                        if info.willAutoRenew {
                          purchaseStatus2 = true
                            debugPrint("getSubscriptionStatus user subscription is active.")
                        } else {
                          purchaseStatus2 = false
                            debugPrint("getSubscriptionStatus user subscription is expiring.")
                        }
                    case .inBillingRetryPeriod:
                        debugPrint("getSubscriptionStatus user subscription is in billing retry period.")
                          purchaseStatus2 = false
                    case .inGracePeriod:
                        debugPrint("getSubscriptionStatus user subscription is in grace period.")
                          purchaseStatus2 = false
                    case .expired:
                        debugPrint("getSubscriptionStatus user subscription is expired.")
                         purchaseStatus2 = false
                    case .revoked:
                        debugPrint("getSubscriptionStatus user subscription was revoked.")
                         purchaseStatus2 = false
                    default:
                        fatalError("getSubscriptionStatus WARNING STATE NOT CONSIDERED.")
                    }
                }
            } catch {
                // do nothing
            }
        
        if purchaseStatus1 == true || purchaseStatus2 == true {
            purchaseStatus = true
        } else if purchaseStatus1 == false && purchaseStatus2 == false {
            purchaseStatus = false
        }
        return
        }
Why can't the app get the subscription status occasionally?
 
 
Q