在Mac App Store的Electron应用程序中实现应用程序内购买

时间:2017-10-15 10:04:40

标签: node.js in-app-purchase electron mac-app-store

我环顾四周,似乎有几个人遇到了这个问题,但似乎没有人解决它:

Adding Apple in-app purchase to Electron HTML/JS app

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

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

有人建议使用此Node到Objective-C桥来执行此操作:

https://github.com/TooTallNate/NodObjC

其他人建议使用这个应用内库,但从我看到的情况来看,它只会验证收据:

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

有没有人真正设法在Mac App Store的Electron应用程序中实现应用内购买?

你是怎么做到的?

如果没有人这样做,那根本不可能吗?

2 个答案:

答案 0 :(得分:1)

更新

最后,我将应用内购买直接添加到Electron。

请参阅https://electronjs.org/docs/tutorial/in-app-purchases

第一个解决方案

我已经实现了这个解决方案,它可以在开发中使用(尚未在生产中测试)。

  1. 使用Xcode创建一个执行应用内购买的MacOS应用程序(InAppPurchase)(参见https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html
  2. InAppPurchase.app 放在Electron app文件夹中的某个位置
  3. 在您的Electron应用中使用require('electron').shell.openItemrequire('child_process').spawn('./InAppPurchase.app/Contents/MacOS/InAppPurchase');开始应用内购买。
  4. 这绝对不是一个干净的解决方案,但似乎有效...

    第二种解决方案

    我认为它也可以用NodObjC完成。但是,与第一种解决方案相比,这个lib非常重。

    第三种解决方案

    直接向Electron添加应用内购买。

    如果我可以通过IAP在Mac Apple Store上发布我的Electron应用程序,或者我找到了其他解决方案,我会通知您。

答案 1 :(得分:0)

user108828之外,我还可以提出更多想法来解决您的问题:

  1. 您可以使用Xcode在obj-C / C ++ / C中将MAS收据验证实现为动态库,然后通过ToTallNate's node-ffi将其包含在项目中。为了实现,您可以使用任何可以在网上轻松找到的解决方案。

  2. 执行收据验证的另一种方法是创建包含node addonopenssl库的自制objective-c runtime。对于此解决方案,您可能还需要包含CoreFoundation和/或其他一些苹果框架。因此,您将能够在纯C / C ++中实现验证,并将其封装在节点模块中。

  3. 您的dylib / node插件的API设计完全取决于您,应该保密。

    祝你好运!