【问题标题】:Implementing in-app purchase in an Electron app for the Mac App Store在 Mac App Store 的 Electron 应用中实现应用内购买
【发布时间】: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

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

你是怎么做到的?

如果没有人做过,那是不可能的吗?

【问题讨论】:

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


    【解决方案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 应用文件夹中的某个位置
    3. 在您的 Electron 应用中使用 require('electron').shell.openItemrequire('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,我还可以提出更多想法来解决您的问题:

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

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

    dylib/node 插件的 API 设计完全由您决定,应该保密。

    祝你好运!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      • 2015-06-30
      • 2021-07-09
      相关资源
      最近更新 更多