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

     2023-02-24     183

关键词:

【中文标题】在 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.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,我还可以提出更多想法来解决您的问题:

    您可以使用 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 和外部分发

】在MacAppStore和外部分发【英文标题】:DistributingonboththeMacAppStoreandexternally【发布时间】:2013-10-1223:44:00【问题描述】:我有一个Mac应用程序,我计划很快推出。我希望它可以在MAS上购买,但我也想在我的网站上提供计时服务。... 查看详情

在 Mac App Store 应用程序中签名库

】在MacAppStore应用程序中签名库【英文标题】:SigninglibrariesinMacAppStoreapp【发布时间】:2011-10-2902:31:22【问题描述】:我刚刚向MacAppStore提交了一个使用一些外部动态库的应用。我收到一封来自Apple的电子邮件:无效签名-可执行的... 查看详情

Mac App Store - 链接到 App Review 页面

】MacAppStore-链接到AppReview页面【英文标题】:MacAppStore-linktoAppReviewPage【发布时间】:2011-01-2614:59:06【问题描述】:在我们软件的iOS版本中,我们会提示用户使用众所周知的“viewContentsUserReviews”网址提交评论。我们希望在MacOSX版... 查看详情

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

】在MacAppStore的Electron应用中实现应用内购买【英文标题】:Implementingin-apppurchaseinanElectronappfortheMacAppStore【发布时间】:2017-10-1510:04:40【问题描述】:我环顾四周,似乎有几个人遇到了这个问题,但似乎没有人解决它:AddingApplein... 查看详情

在 Mac App Store 中使用未记录的类,例如 NSPreferences

】在MacAppStore中使用未记录的类,例如NSPreferences【英文标题】:UsingundocumentedclassessuchasNSPreferencesinMacAppStore【发布时间】:2011-03-1912:19:47【问题描述】:有一个名为NSPreferences的未记录类似乎被Safari和Mail使用,并简化了多页首选... 查看详情

App for Mac App Store 签名后不运行

】AppforMacAppStore签名后不运行【英文标题】:AppforMacAppStoredoesn\'trunwhensigned【发布时间】:2011-09-1708:25:18【问题描述】:我是MacAppStore开发的新手,我正在尝试在开发环境中测试我的第一个签名应用(就在陷入收据验证的混乱之前... 查看详情

为啥电子应用可以在 MAC App Store 上发布?

】为啥电子应用可以在MACAppStore上发布?【英文标题】:WhycanelectronappbepublishedonMACAppStore?为什么电子应用可以在MACAppStore上发布?【发布时间】:2018-12-2503:36:29【问题描述】:根据这个guideline,电子应用可以发布到MACAppStore。Electr... 查看详情

向 Mac App Store 提交问题

】向MacAppStore提交问题【英文标题】:SubmissionissuetoMacAppStore【发布时间】:2013-05-2401:18:47【问题描述】:来自iOS世界,第一次提交到MacAppStore并且已经挣扎了几个小时......请帮助!我在这里阅读了一些答案,但似乎仍然存在问题... 查看详情

Mac App Store - 无法保存文件

】MacAppStore-无法保存文件【英文标题】:MacAppStore-can\'tsaveafile【发布时间】:2011-05-1903:52:50【问题描述】:当您通过MacAppStore分发应用程序时,在保存文件方面是否有任何限制?如果我从我的计算机编译并运行我的应用程序,它... 查看详情

Mac 应用程序 |代码签名 |不通过 Mac App Store 分发 [关闭]

】Mac应用程序|代码签名|不通过MacAppStore分发[关闭]【英文标题】:MacApp|CodeSigned|distributionNotthroughMacAppstore[closed]【发布时间】:2013-03-2613:46:49【问题描述】:我们的应用程序最初不会通过mac应用商店分发,它将通过DMG文件,那么... 查看详情

如何在我的 Mac 上使用 App Store 连接 API,在 WWDC 18 中宣布?

】如何在我的Mac上使用AppStore连接API,在WWDC18中宣布?【英文标题】:HowtouseAppStoreconnectAPIwithmymac,announcedinWWDC18?【发布时间】:2018-06-1011:29:05【问题描述】:我在这里看到了WWDC18相关视频中的演示:https://developer.apple.com/videos/play/... 查看详情

Mac App Store Xcode 5 删除 Xcode 4

】MacAppStoreXcode5删除Xcode4【英文标题】:MacAppStoreXcode5deletesXcode4【发布时间】:2013-10-0920:54:32【问题描述】:自iOS7.0.2发布以来,刚刚在应用商店中安装了Xcode5。我的应用程序文件夹中有一个重命名的Xcode4版本,在Xcode5的安装过... 查看详情

Mac App Store 权利 - 代码对象根本没有签名

】MacAppStore权利-代码对象根本没有签名【英文标题】:MacAppStoreentitlement-codeobjectisnotsignedatall【发布时间】:2014-10-1614:20:31【问题描述】:我一直在尝试向MacOSX商店提交应用更新,但我的所有提交都被拒绝,并出现错误“代码对... 查看详情

Mac App Store:规避沙盒要求

】MacAppStore:规避沙盒要求【英文标题】:MacAppStore:circumventsandboxrequirement【发布时间】:2014-03-3023:14:00【问题描述】:正如互联网上的许多来源所说,您需要将您的应用沙盒化才能将其部署到AppStore。此外,根据this,沙盒时无法... 查看详情

如何在 OSX 上为 Python 应用程序启用 App 沙箱(Python 应用程序针对 Mac App Store)

...OSX上为Python应用程序启用App沙箱(Python应用程序针对MacAppStore)【英文标题】:HowtoenableAppsandboxforapythonapponOSX(ThepythonappistargetedforMacAppStore)【发布时间】:2013-04-1704:26:05【问题描述】:首先,python应用程序是针对MacAppStore的。苹果... 查看详情

10.7.3 之前的 Mac App Store 沙盒和处理安全范围的书签

】10.7.3之前的MacAppStore沙盒和处理安全范围的书签【英文标题】:MacAppStoresandboxingandhandlingsecurity-scopedbookmarkspriorto10.7.3【发布时间】:2012-08-3001:50:14【问题描述】:我需要我的沙盒应用在应用重新启动后重新打开打开的文件。Appl... 查看详情

带有 Safari 扩展的 Mac App Store 应用程序

】带有Safari扩展的MacAppStore应用程序【英文标题】:MacAppStoreappwithSafariExtension【发布时间】:2011-09-2820:35:15【问题描述】:我正在尝试了解像1Password这样的应用程序如何在MacAppStore上出现并附带Safari扩展程序(最重要的是,扩展... 查看详情

上传到 Mac App Store 时出错:ITMS-90239

】上传到MacAppStore时出错:ITMS-90239【英文标题】:ErroruploadingtoMacAppStore:ITMS-90239【发布时间】:2015-04-2022:06:06【问题描述】:首先让我说我知道有无数这样的问题,但我相信我已经检查了前面问题中的所有原因,仍然有问题。我... 查看详情