假设我有一个名为A的应用程序.
捆绑标识符在所有Mac和iOS应用程序中必须是唯一的.这意味着如果我在iOS App Store上有应用程序A和Bundle ID com.mycompany.a
,我就无法在Mac App Store上使用相同的Bundle ID创建应用程序com.mycompany.a
.
好吧,说,区分Bundle ID的最佳方法是什么?
我能想到的一些例子:
com.mycompany.a_ios
, com.mycompany.a_mac
com.mycompany.ios.a
, com.mycompany.mac.a
有没有其他想到的?你用过哪个?
我真的很生气这个问题!我有一个应用程序,其中包含一个简单的帮助应用程序,它管理主应用程序的登录项.
当我尝试提交应用时,我会收到与配置文件和权利相关的错误.我确信这个问题与Helper应用程序有关,因为在我添加之前,提交工作没有问题.
目前,帮助应用程序已经过代码签名,并被沙盒化为主应用程序.
错误是:
配置文件无效.捆绑包中包含的配置文件无效
无效的代码签名权利.应用包标签中的权利与配置文件中包含的权利不匹配.该包中包含一个未包含在"myapp.app/Contents/Library/LoginItems/helper.app"中的配置文件"com.apple.application-identifier"中的密钥
无效的代码签名权利.应用包标签中的权利与配置文件中包含的权利不匹配.该软件包包含一个密钥,该密钥未包含在"myapp.app/Contents/MacOS/myapp"中的配置文件"com.apple.application-identifier"中
我有一个应用程序,我将把它放在Mac App Store中.我想为偏好同步添加iCloud支持,因此,我想分发以他们可以访问iCloud的方式签名的beta.
但是,我无法在Mac文档库中找到有关在App Store外部分发应用程序,使用分发密钥签名以及能够访问iCloud的任何内容.
到目前为止,我分发此类应用程序的尝试无法在测试人员的计算机上启动,控制台中的消息抱怨该应用程序具有iCloud权利.
是我可能的,或者我应该放弃iCloud支持?如果可能的话,我需要做些什么来制作可分发的,支持iCloud的版本?
编辑:要清楚,您可以将此问题中的"iCloud支持"替换为仅适用于App Store应用程序的任何其他功能.我提到它确定解决方案不是"只是将它分配给无符号".iCloud是我特定案例的目标; 我在询问一般过程.
我希望能够使用促销代码发送一个链接,以便在应用程序商店中免费下载我的应用程序.这可以使用此URL在iOS应用商店中完成https://phobos.apple.com/WebObjects/MZFinance.woa/wa/freeProductCodeWizard?code=<YOUR-PROMO-CODE-HERE>
但这不适用于Mac应用商店促销代码.
有谁知道Mac应用商店是否存在类似的网址?
我有一个Mac OS X应用程序,由主目标和依赖框架组成.自从在我的Mac OS X应用程序上启用代码签名后,我注意到Xcode每次运行时都会重建主目标,即使我没有触及一行代码.
这是一个问题,因为依赖框架需要知道主目标文件的CRC.每次Xcode重建主目标时,CRC都会改变.
在代码签名之前,我将构建主目标一次,生成CRC,将CRC输入到我的框架代码中,并再次构建主目标.Xcode会注意到只有框架发生了变化,所以它不会重建主目标.
有什么建议?谢谢!
西蒙
我验证了服务器端Mac App Store的应用内购买(所谓的消耗品)的接收情况.Apple服务器的响应通常如下所示:
{
"status"=>0,
"environment"=>"Production",
"receipt" =>
{
"receipt_type" => "Production",
"adam_id"=>410628904,
"bundle_id" => "com.company.product",
"application_version"=>"1.0.0",
"download_id"=>002141541230420,
"request_date"=>"2013-10-22 07:53:11 Etc/GMT",
"request_date_ms"=>"1382428391914",
"request_date_pst"=>"2013-10-22 00:53:11 America/Los_Angeles",
"original_purchase_date"=>"2011-08-22 06:05:47 Etc/GMT",
"original_purchase_date_ms"=>"1313993147000",
"original_purchase_date_pst"=>"2011-08-21 23:05:47 America/Los_Angeles",
"original_application_version"=>"1.0.0",
"in_app"=> [
{
"quantity"=>"1",
"product_id"=>"com.company.product.mac_consumable",
"transaction_id"=>"9123912391231",
"original_transaction_id"=>"51881235936908",
"purchase_date"=>"2013-10-22 07:52:06 Etc/GMT",
"purchase_date_ms"=>"1382428326000",
"purchase_date_pst"=>"2013-10-22 00:52:06 America/Los_Angeles",
"original_purchase_date"=>"2013-10-22 07:52:06 Etc/GMT",
"original_purchase_date_ms"=>"1382428326000",
"original_purchase_date_pst"=>"2013-10-22 00:52:06 America/Los_Angeles",
"bundle_id"=>"com.company.product"
}
]
}
}
Run Code Online (Sandbox Code Playgroud)
但有时我们会在没有in_app哈希集的情况下获取信息:
{
"status"=>0,
"environment"=>"Production",
"receipt" =>
{
"receipt_type" => "Production",
"adam_id"=>312621904,
"bundle_id" => "com.company.product",
"application_version"=>"1.0.0",
"download_id"=>002141541230420,
"request_date"=>"2013-10-22 07:53:11 Etc/GMT",
"request_date_ms"=>"1382428391914",
"request_date_pst"=>"2013-10-22 …
Run Code Online (Sandbox Code Playgroud) 有几次有人在Apple App Store中非法分发了我的GPL许可的Mac应用程序,Apple对移除通知的响应非常缓慢.
我想知道我是否可以采取任何措施使应用程序尽可能与AppStore不兼容,而不会影响应用程序及其在AppStore外部的源代码的使用.
我意识到,由于应用程序是开源的,我无法保证AppStore拒绝,但至少我想让违反许可证的AppStore提交比平常更难.
在最新的电子邮件详细说明10.10 beta 5和10.9.5的看门人更改后,我立即用TN2206的推荐方法验证了我的应用程序.令我惊讶的是,由于我没有使用资源规则并在Mavericks上构建它,它失败了:
$ spctl -a -t exec -v /Applications/MyApp.app/
/Applications/MyApp.app/: rejected
source=obsolete resource envelope
Run Code Online (Sandbox Code Playgroud)
然后,我继续检查Xcode存档中提交的二进制文件,该文件被迅速拒绝,但没有"过时的资源信封"警告.我想那是因为它是由提交证书签名的.
$ spctl -a -t exec -v Products/Applications/MyApp.app/
Products/Applications/MyApp.app/: rejected
Run Code Online (Sandbox Code Playgroud)
后来,我检查了资源信封:
$ codesign -d -v /Applications/MyApp.app/
Executable=/Applications/MyApp.app/Contents/MacOS/MyApp
Identifier=my.app.id
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20100 size=14108 flags=0x200(kill) hashes=697+5 location=embedded
Signature size=4169
Info.plist entries=34
TeamIdentifier=not set
Sealed Resources version=1 rules=5 files=82
Internal requirements count=1 size=220
Run Code Online (Sandbox Code Playgroud)
然后提交的应用程序:
$ codesign -d -v Products/Applications/MyApp.app/
Executable=/Users/jorgepeixotovasquez/Library/Developer/Xcode/Archives/2014-07-09/myapp 09-07-14 00.34.xcarchive/Products/Applications/MyApp.app/Contents/MacOS/myApp
Identifier=my.app.id
Format=bundle with Mach-O thin (x86_64)
CodeDirectory v=20200 size=14123 flags=0x0(none) hashes=697+5 location=embedded …
Run Code Online (Sandbox Code Playgroud) 随着从Mac AppStore安装Xcode的新要求,我想找到安装包(.dmg)并将其存档到某个地方.
用例1:有100多个工作站,不想(需要)下载100次以上.
用例2:我使用Xcode 4.1.1构建产品,归档,运送和延迟使用寿命.高级客户需要紧急错误修复,我想暂时安装一些使用THAT Xcode的工作站.
TIA.
顺便说一句,Lion也是如此,或者Apple可能发布的任何未来猫科动物.
我正在构建一个与命令工具'unrar'捆绑在一起的Mac应用程序来解开一些文件.该应用程序是沙盒.
在xcode中,我将unrar命令工具复制到应用程序的Resourse文件夹(带有名为'exec'的子路径):
复制文件: 目标:资源 - 子路径:执行
在复制阶段之后,我执行运行脚本来设置权利和代码签名,如下所示:
运行脚本: Shell:/ bin/sh
LOCATION="${BUILT_PRODUCTS_DIR}"/"${CONTENTS_FOLDER_PATH}"
IDENTITY="3rd Party Mac Developer Application: CompanyName."
codesign -f -s "$IDENTITY" --entitlements"/<path>/unrar.entitlements" "$LOCATION"/Resources/exec/unrar
Run Code Online (Sandbox Code Playgroud)
在应用程序本身中,我使用NSTask来执行unrar命令:
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"unrar" ofType:@"" inDirectory:@"exec"];
NSTask *task = [[NSTask alloc] init];
[task setLaunchPath:filePath];
[task setArguments:[NSArray arrayWithObjects:@"e", rarfilepath,extractpath, nil]];
[_task launch];
Run Code Online (Sandbox Code Playgroud)
unrar.entitlements包含:
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.inherit</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
运行应用程序时,一切正常,文件被提取.
但是......然后当我检查系统日志时,我看到以下消息:
secinitd [332]:unrar [94747]:无法获取主可执行文件包的根路径:/Applications/App.app/Contents/Resources/exec/unrar
当我不运行上面的运行脚本时,该消息确实消失,但是然后没有为'unrar'命令工具设置权利并且Sandboxing失败.
我现在已经听了三天听到这个消息意味着什么,以及如何解决它,但我没有想法.
搜索谷歌或stackoverflow也没有帮助.
请有人帮我解决这个问题.
谢谢你,安德烈.
(抱歉所有文字,但我不允许发布图片.)
mac-app-store ×10
macos ×6
app-store ×4
code-signing ×3
ios ×3
cocoa ×2
objective-c ×2
xcode ×2
gpl ×1
icloud ×1
osx-yosemite ×1
provisioning ×1
sandbox ×1
submission ×1