I want to implement in-app purchases for my Mac Safari web extension.
I can think of two ways:
- Draw the payment UI in an extension web page, and send a message to the native extension app to call StoreKit code.
- Open the container app from an extension web page, where the app draws the payment UI.
I couldn't make #1 work with either
StoreKit 2, which is async, and context.completeRequest(returningItems:)
doesn't want to be called in a Task
, saying context is not sendable)
or StoreKit 1, where calling context.completeRequest(returningItems:)
in paymentQueue(_:updatedTransactions:)
for some reason doesn't return a response to the extension's web page.
I couldn't make #2 work because I couldn't find a way to open the container app from the web extension. I registered a custom URL for my container app, but context.open
that url does nothing.
Web extensions that use IAP with #2 are available on the Mac app store, so it must be possible, could anyone shed some light on how to open the container app and pass the purchased info to the extension web page even if the container app is not open?
Thanks in advance.