payments icon indicating copy to clipboard operation
payments copied to clipboard

Calling fetchItems twice doesn't work in a single app session

Open fdbk-web opened this issue 3 years ago • 0 comments

Nativescript versions @nativescript/payments 1.0.4 @nativescript/core: ~8.1.1 @nativescript/ios: 8.2.2

iOS Version: 15.1.1

Device: iPhone 13 Pro max

Summary of issue: First time calling .connect() and fetchItems is fine. Subscriptions and IAPs (app store products) etc. load. Second time we call it in our app, it does not load at all. However, restarting the app seems to load the app store products again.

We used the code structure provided in this plugin documentation.

Related issues: https://stackoverflow.com/questions/25426564/completion-handler-causing-exc-bad-access-when-same-method-is-called-twice

Workaround/fix for now: Call teardown() before you leave the subscriptions/IAP page, etc.

eg.

import {
  buyItem,
  BuyItemOptions,
  canMakePayments,
  fetchItems,
  finalizeOrder,
  init as initPayments,
  Item,
  PaymentEvent,
  paymentEvents,
  toMainThread,
  tearDown as cleanUp
} from '@nativescript/payments';

onClose() {
    // Clean up what we've done here as otherwise subscriptions won't load on 2nd reload
    cleanUp();

    this.location.back();
}

Suggested course of action: Update the docs for this plugin to make it clear that tearDown should be called before leaving the page with the subscription / IAP options, etc.

Screenshots: When everything is fine (1st call / call with the fix above): IMG_0734

When trying to call the .connect() and fetchItems a second time in an app session (without the fix above): IMG_0733

fdbk-web avatar Apr 02 '22 18:04 fdbk-web