Implementación de la compra en la aplicación en una aplicación Electron para Mac App Store

He mirado a mi alrededor y parece que varias personas tienen este problema pero nadie parece haberlo resuelto:

Agregar la compra de Apple desde la aplicación a la aplicación Electron HTML / JS

https://github.com/electron/electron/issues/3745

https://discuss.atom.io/t/osx-in-app-purchases-in-electron/22885

Algunas personas sugieren usar este puente de Nodo a Objective-C para hacerlo:

https://github.com/TooTallNate/NodObjC

Otras personas sugieren usar esta biblioteca integrada en la aplicación, pero por lo que puedo ver, solo valida los recibos:

https://github.com/voltrue2/in-app-purchase

¿Alguien realmente ha logrado implementar compras dentro de la aplicación en una aplicación Electron para la Mac App Store?

¿Cómo lo hiciste?

Si nadie lo ha hecho, ¿es simplemente imposible hacerlo?

Primera solucion

He implementado esta solución y funciona en desarrollo (aún no probado en producción).

  1. Cree una aplicación MacOS (InAppPurchase) con XCode que realice la compra dentro de la aplicación (consulte https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html )
  2. Coloque InAppPurchase.app en algún lugar de su carpeta de aplicaciones de Electron
  3. Use require('electron').shell.openItem o require('child_process').spawn('./InAppPurchase.app/Contents/MacOS/InAppPurchase'); en su aplicación Electron para iniciar la compra en la aplicación.

Esto definitivamente no es una solución limpia pero parece funcionar …

Segunda solucion

Creo que también se puede hacer con NodObjC. Sin embargo, esta lib es muy pesada en comparación con la primera solución.

Tercera solucion

Añadiendo compras en la aplicación directamente a Electron.


Le mantendré informado si puedo lanzar mi aplicación Electron en Mac Apple Store con IAP o si encuentro otra solución.

Además de user108828, puedo sugerir un par de ideas más para resolver su problema:

  1. Puede implementar la validación de recibos de MAS como una biblioteca dinámica en obj-C / C ++ / C utilizando Xcode y luego incluirla en su proyecto a través del nodo -ffi de ToTallNate . Para la implementación, puede utilizar cualquiera de las numerosas soluciones que puede encontrar fácilmente en la web.

  2. Otra forma de realizar la verificación de recibos es crear un complemento de nodo hecho por sí mismo que incluya las bibliotecas de tiempo de ejecución openssl y object -c . Para esta solución, es posible que también deba incluir CoreFoundation y / o algunos otros frameworks de Apple. Como resultado, podrá implementar su validación en C / C ++ puro e incapsularla en su módulo de nodo.

El diseño de la API de su complemento dylib / node depende estrictamente de usted y debe mantenerse en secreto.

¡Buena suerte!