在 Mac App Store 的 Electron 应用中实现应用内购买
Posted
技术标签:
【中文标题】在 Mac App Store 的 Electron 应用中实现应用内购买【英文标题】:Implementing in-app purchase in an Electron app for the Mac App Store 【发布时间】:2017-10-15 10:04:40 【问题描述】:我环顾四周,似乎有几个人遇到了这个问题,但似乎没有人解决它:
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
有没有人真正设法?
你是怎么做到的?
如果没有人做过,那是不可能的吗?
【问题讨论】:
【参考方案1】:更新
最后,我将应用内购买直接添加到 Electron。
见https://electronjs.org/docs/tutorial/in-app-purchases
第一个解决方案
我已经实施了这个解决方案,它在开发中有效(尚未在生产中测试)。
-
使用 Xcode 创建一个 MacOS 应用程序 (InAppPurchase) 以执行应用内购买(请参阅https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StoreKitGuide/Introduction.html)
将 InAppPurchase.app 放在 Electron 应用文件夹中的某个位置
在您的 Electron 应用中使用
require('electron').shell.openItem
或 require('child_process').spawn('./InAppPurchase.app/Contents/MacOS/InAppPurchase');
开始应用内购买。
这绝对不是一个干净的解决方案,但它似乎工作......
第二种解决方案
我认为它也可以用 NodObjC 来完成。但是,与第一个解决方案相比,此库非常重。
第三种解决方案
将应用内购买直接添加到 Electron。
如果我可以通过 IAP 在 Mac Apple Store 上发布我的 Electron 应用程序,或者我找到了其他解决方案,我会通知你。
【讨论】:
这看起来是一个很好的开始。我看过一点 NodObjC,但发现它真的很混乱。一般来说,我发现 Objective C 和 JS 的混合非常令人困惑。你能分享你的Xcode“应用程序”吗?我不完全理解 'require('electron').shell.openItem' 的作用。你能进一步解释一下它的作用吗? 顺便说一句...如果您能给我一个我可以实施的可行解决方案,我将在 300 赏金积分之上额外投入 50 美元作为额外的感谢。我认为这个问题没有已知的解决方案,真的很想找到一个。 好的,谢谢,我会尝试将它直接添加到 Electron。我认为这是最好的解决方案。 听起来不错。让我知道事情的后续。如果您有一些示例代码,请不要犹豫发布它。然后我可能会看看我是否也可以用它做点什么。 你有什么发现吗?您能否创建一个可以共享(或仅共享主代码)的示例 Xcode 应用程序,以说明 Xcode 应用程序将如何?如果可以,那么我也许能够理解该解决方案的工作原理并以此为基础构建东西。【参考方案2】:除了user108828,我还可以提出更多想法来解决您的问题:
您可以使用 Xcode 在 obj-C/C++/C 中将 MAS 收据验证实现为动态库,然后通过 ToTallNate's node-ffi 将其包含在您的项目中。对于实施,您可以使用可以在网络上轻松找到的大量解决方案中的任何一种。
另一种执行收据验证的方法是创建一个自制的node addon,其中包括openssl 和objective-c runtime 库。对于此解决方案,您可能还需要包含 CoreFoundation 和/或其他一些苹果框架。因此,您将能够在纯 C/C++ 中实现验证并将其封装在您的节点模块中。
dylib/node 插件的 API 设计完全由您决定,应该保密。
祝你好运!
【讨论】:
以上是关于在 Mac App Store 的 Electron 应用中实现应用内购买的主要内容,如果未能解决你的问题,请参考以下文章
在没有 Mac 的情况下向 Apple App Store 提交 Ionic App [重复]