我已经向Mac App Store提交了一个帮助应用程序(使用LSUIElement).我误以为App Store安装过程会为帮助应用程序设置一个停靠图标.
如何在状态栏应用程序独立运行时(如热门应用程序Caffeine)创建用户可以删除的停靠图标?我是否需要创建一个加载LSUIElement应用程序的非LSUIElement应用程序,还是有更好的方法?
我一直在使用Apple的代码和互联网上的一些指南进行收据验证.此时,我已设法签署代码,并开始验证以验证收据.此时,如果您不熟悉Apple文档的这一部分,将会很有帮助:
当我在XCode中启动应用程序时,应用程序按预期退出代码173(没有要验证的收据).当我在XCode之外启动应用程序(双击查找程序)时,应用程序启动一瞬间,关闭,并弹出登录对话框(如预期的那样).我在iTunes Connect中创建了一个测试帐户,并使用此帐户登录.点击登录按钮后,进度指示器会旋转几秒钟,然后登录框消失.据我所知,此后没有任何事情发生.据我所知,App Store应该自动生成/拉取收据并在此时启动应用程序,但事实并非如此.
我试着更好地观察应用程序启动过程.我在收据检查过程的每个点都放了一些printf,但我无法弄清楚这些打印的位置.(使用'open'在终端中启动应用程序根本不显示任何输出.)我尝试使用NSRunAlertPanel生成对话框,但我认为当收据检查发生时,应用程序的加载不够他们适当地来.
在这一点上,我不确定如何进一步调试问题,因为无法真正观察到正在发生的事情.
好吧,我用Xcode 3.2.5开发了一个mac应用程序.我也从mac app store创建了证书和条款.但问题是.provisionprofile没有在Xcode中安装.我正在使用Xcode 3.2.5.我不能用这个提交mac应用程序吗?
我是否必须将Xcode更新为版本4?
我在Xcode 4.2中创建了一个基本的应用程序.应用非常简单,我没有改变过一件事.推送运行,您将获得标准的基本应用程序窗口.如果我为我的目标启用权利并点击运行,我没有得到任何调试器错误,但窗口永远不会出现.我用Console.app检查了日志,得到了以下内容:
我得到的第一个错误:
taskgated: killed com.alsbury.EntitlementsTest[pid 15903] because its use of the com.apple.developer.ubiquity-container-identifiers entitlement is not allowed
Run Code Online (Sandbox Code Playgroud)
删除iCloud容器"com.alsbury.EntitlementsTest"后,我收到此错误:
taskgated: killed com.alsbury.EntitlementsTest[pid 15903] because its use of the com.apple.developer.ubiquity-container-identifiers entitlement is not allowed
Run Code Online (Sandbox Code Playgroud)
由于iCloud类型的东西,我甚至在我的开发者帐户中添加了一个应用程序,一个配置文件并添加了我的机器.有什么想法吗?现在很困惑.
注意:这适用于Mac OS X而非iOS
我有一个客户端应用程序,将允许消费的应用程序内购买.应将收据发送到服务器,服务器在获取订单时执行某些操作.服务器执行的操作花了我一些钱,所以我需要格外小心,收据是有效的,只使用一次.我正在寻找最好的设计方法.
看起来我在用户完成购买时从storekit获得收据.当我将其发送到我的Web服务器(运行WCF)时,它将通过将JSON发布到Apple来验证收据.当Apple确认收据时,它会进行操作,这会花费我一些钱.在验证收据部分,我的研究告诉我,消耗品收据总是有效,实际上并没有"消费".我是否应该只跟踪提交给我的服务器的每一张收据,并确保它没有被使用?我会尽一切努力来支持这个清单,但我担心它会在某些时候迷失,并希望以另一种方式.
我的另一个问题是,由于消费品收据无法通过商店包恢复,如果发生某些事情,例如用户在购买完成后失去权力,那么用户将无法获得产品,因为无法检索该收据.这只是我们必须承担的风险还是我忽略了什么?听起来,消耗品和非消耗品之间唯一真正的区别在于您无法恢复消耗品.
我正在开发一个应用程序,其中使用全局按键事件将是其操作的必要条件.此外,我计划通过App Store严格分发.(它是一个Mac应用程序,而不是iOS.)我已经得到了一个通过addGlobalMonitorForEventsMatchingMask监听全局事件的示例,但有一些警告.
注意:我正在选择使用现代API而不依赖于早期的Carbon热键方法.如果他们最终被弃用,我不想在以后解决这个问题.
主要问题是必须信任应用程序才能检测到全局事件.否则,必须为所有应用启用辅助功能.启用辅助功能时,会成功检测到事件.此要求记录在此处,http://developer.apple.com/library/mac/#DOCUMENTATION/Cocoa/Conceptual/EventOverview/MonitoringEvents/MonitoringEvents.html.
我希望对我的用户来说,他们不必启用辅助功能.从我已经完成的其他研究中,您可以通过调用AXMakeProcessTrusted来获取可信任的应用程序,然后重新启动应用程序.
在我正在使用的代码中,我没有得到身份验证提示.应用程序将重新启动,但仍然不受信任(可能是因为我没有收到身份验证提示).这是我的这部分代码:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
if (!AXAPIEnabled() && !AXIsProcessTrusted()) {
NSString *appPath = [[NSBundle mainBundle] bundlePath];
AXError error = AXMakeProcessTrusted( (CFStringRef)CFBridgingRetain(appPath) );
[self restartApp];
}
}
- (void)restartApp{
NSTask *task = [[NSTask alloc] init];
NSMutableArray *args = [NSMutableArray array];
[args addObject:@"-c"];
[args addObject:[NSString stringWithFormat:@"sleep %d; open \"%@\"", 3, [[NSBundle mainBundle] bundlePath]]];
[task setLaunchPath:@"/bin/sh"];
[task setArguments:args];
[task launch];
[NSApp terminate:nil];
}
Run Code Online (Sandbox Code Playgroud)
此外,我在这里查看了授权服务任务的文档https://developer.apple.com/library/mac/#documentation/security/conceptual/authorization_concepts/03authtasks/authtasks.html#//apple_ref/doc/uid/TP30000995-CH206-BCIGAIAG.
弹出的第一件事就是弹出这个信息框,"重要的是,应用程序沙箱中不支持授权服务API,因为它允许权限提升."
如果在重新启动应用程序之前需要此API来获取身份验证提示,则似乎在未启用辅助功能的情况下我可能无法获取全局事件.
总之,我的具体问题是:
我的示例代码中是否有关于如何显示身份验证提示的错误?
为了显示身份验证提示,我是否需要使用Authorization Services …
描述 我正计划开发一个科学的沙盒应用程序,需要安装内核扩展才能正常运行.
代码相关问题 应用程序在购买时如何安装kext?我的意思是,它将如何部署?是否有一些(可可)API可以调用?我没有运气就找到了这个答案.似乎大多数应用程序不需要kexts.
一般问题 我是否可以将这样的应用程序放在appStore上?我有疑问,因为安装内核扩展会破坏沙盒的目的.
我开发了一个Mac桌面应用程序,我们有一个商业理由让我们的用户为我们的应用程序安装少量驱动程序.
由于沙箱约束,我无法获得用户在/Users/System Name/Library/
文件夹中安装驱动程序的访问权限.(即)在访问应用程序之前,它将要求用户从单个软件包安装程序安装驱动程序以安装驱动程序.
此外,由于沙盒限制,我无法在单个程序包中捆绑驱动程序以安装驱动程序和Mac应用程序.所以我必须将驱动程序和应用程序安装分开为两步.
我已将应用程序提交给Apple审核小组,其中包含安装驱动程序的说明,然后安装mac app以执行所需的功能.我已经详细介绍了视频以执行这些步骤.但审核小组拒绝了以下原因:
原因:
2.3:开发人员宣传的效果不佳的应用程序将被拒绝我们写信是为了通知您,App Review Board已完成对您的申诉的审核,并确定此版本的应用违反了Guideline 2.3.我们已确定您的应用程序要求用户下载并安装其他软件,以便应用程序按照所宣传的方式执行.应用程序不应要求用户安装其他软件以使应用程序正常工作.我们会考虑到这一点继续审核您的应用.
状态:完成.
感谢您对Mac应用程序开发的承诺.App Review Board.
我了解用户不应该为应用程序安装其他软件,但需要知道在Mac App Store中提交应用程序的可能方式,以利用商店优势,而不是在Mac App Store外部发布.您的宝贵建议有助于对此解决方案进行任何设计更改.
更新:(应用程序流程和驱动程序的角色).
这是我的Mac应用程序设计和技术流程:
1.Product实际上用于将文档存储在服务器上,并将文档用于存储和云打印.我有两个选项将文档发送到云:
a)用户可以右键单击任何文档,将其传递给Mac应用程序以将文档发送到云服务器.
b)我还有另一种选择,即从打印选项(ctrl + P)发送文件,我会将文件转换为通用格式,以便云服务器理解.此功能将为用户带来更多价值,我也希望坚持这种方法.用户可以通过文档打印功能和mac驱动程序文件传递任何文档,其他一些支持文件将与MAC应用程序通信以进行进一步处理.
2.Mac App将显示每个文件的上传文件/状态列表.
驱动程序文件在处理文档格式方面有很多功能,这些功能对云有帮助,所以我必须在我的架构中根据业务需求提供驱动程序文件.
Mac应用程序和驱动程序组件将使用Apple脚本进行通信以相互连接.一旦驱动程序组件完成必要的步骤,它就会调用apple脚本来调用Mac应用程序来执行其功能.
macos review appstore-approval mac-app-store appstore-sandbox
我有一个Mac应用程序,提供应用程序内购买.有一段时间我有用户联系我,因为购买失败并出现以下错误.
请注意,这适用于普通用户.这对我来说可以.(对于具有"测试"用户帐户的开发人员来说,这有很多问题,这不是这种情况).
错误:
Error Domain=SKErrorDomain Code=0 "Unknown Error." UserInfo=0x7fead1e44490
{NSLocalizedDescription=Unknown Error.}
Run Code Online (Sandbox Code Playgroud) 我已将IAP添加到我的Mac Appstore应用程序中.我无法正确验证收据服务器端.我正在使用此代码阅读收据:
NSURL *receiptURL = [[NSBundle mainBundle] appStoreReceiptURL];
NSData *receipt = [NSData dataWithContentsOfURL:receiptURL];
// This is my own method to convert to base64
NSString *receiptString = [NSData base64forData:receipt];
Run Code Online (Sandbox Code Playgroud)
然后我将数据发送到我的服务器,然后查询https://buy.itunes.apple.com/verifyReceipt以查看收据是否有效.无论我在尝试什么,我总是收到无效的收据.当我将收据文件作为纯文本提供或使用命令行工具编码时,我也尝试使用具有相同问题的gem Venicebase64
.但同时它失败了我从我的所有应用程序中尝试的任何收据文件/Applications
.
有没有人在Mac Appstore上成功实施了收据验证?
mac-app-store ×10
macos ×7
cocoa ×2
xcode ×2
entitlements ×1
objective-c ×1
receipt ×1
review ×1
sandbox ×1
statusbar ×1
storekit ×1