Implementing in-app purchase in an Electron app for the Mac App Store

廉价感情. 提交于 2019-12-21 04:24:14

问题


I've looked around and it seems like several people are having this issue but no-one seems to have solved it:

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

Some people suggest using this Node to Objective-C bridge to do it:

https://github.com/TooTallNate/NodObjC

Other people suggest using this in-app library, but from what I can see, it only validates receipts:

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

Has anyone actually managed to implement in-app purchases in an Electron app for the Mac App Store?

How did you do it?

If no one has done it, is it simply impossible to do?


回答1:


Update

Finally, I added in-app purchase directly to Electron.

See https://electronjs.org/docs/tutorial/in-app-purchases


First solution

I have implemented this solution and it works in development (not yet tested in production).

  1. Create a MacOS application (InAppPurchase) with Xcode that performs the in-app purchase (see https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html)
  2. Put the InAppPurchase.app somewhere in your Electron app folder
  3. Use require('electron').shell.openItem or require('child_process').spawn('./InAppPurchase.app/Contents/MacOS/InAppPurchase'); in your Electron app to start the in-app purchase.

This is definitely not a clean solution but it seems to work...

Second solution

I think that it can also be done with NodObjC. However, this lib is very heavy compared to the first solution.

Third solution

Adding in-app purchase directly to Electron.


I will keep you informed if I can release my Electron app on the Mac Apple Store with IAP or if I found another solution.




回答2:


In addition to user108828 i can suggest a couple more ideas to solve your problem:

  1. You can implement MAS receipt validation as a dynamic library in obj-C/C++/C using Xcode and then include it in your project via ToTallNate's node-ffi. For implementation you can use any of a large number of solutions that you can easely find on web.

  2. Another way to perform receipt verification is to create a self made node addon that includes openssl and objective-c runtime libraries. For this solution you may also need to include CoreFoundation and/or some other apple frameworks. As a result you will be able to implement your validation in pure C/C++ and incapsulate it in your node module.

The API design of your dylib/node addon is strictly up to you and should be kept in secret.

Good luck!



来源:https://stackoverflow.com/questions/46753835/implementing-in-app-purchase-in-an-electron-app-for-the-mac-app-store

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!