我正在使用Jailbreak + Appsync + iOS5.0.1设备(没有开发人员许可证但有一些技巧我可以在设备上运行我的应用程序)
现在我想使用私有API launchApplicationWithIdentifier:suspended:.所以我需要补充一下
<key>com.apple.springboard.launchapplications</key>
<true/>
Run Code Online (Sandbox Code Playgroud)
到myApp.entitlements.plist文件.然后它应该工作但我仍然得到错误
'Receiver type 'UIApplication' for instance message does not declare a method
with selector 'launchApplicationWithIdentifier:suspended:''
Run Code Online (Sandbox Code Playgroud)
然后我发现有人说,如果我想使用Entitlements.plist,必须启用代码签名.这是真的吗?我必须拥有开发者许可证吗?
或者有没有其他方法来使用这种方法?我读了一些关于如何使用私有API的方法.这似乎很难.我是iOS开发的新手.
谢谢.
jailbreak iphone-privateapi entitlements code-signing-entitlements
这是我的步骤.
我使用pass.com.domain.AppName样式创建了一个passtype ID.
我为com.domain.AppName创建了一个App ID.
我在App ID中启用了Passes.
我使用之前创建的应用ID创建了新的配置文件.
我在Xcode中打开了我的项目,将代码签名标识设置为我刚刚创建的配置文件.
我启用了权利,并在传递下,告诉它使用我的配置文件中的权利.
它说通行证没有启用.我究竟做错了什么?
我正在构建一个我想在mac app store中分发的mac应用程序.我需要这个应用程序才能拥有锁屏功能.
我有两种不同的方法,问题是,只要我为应用程序启用沙盒(这是mac应用程序商店所需),这些方法都不会起作用.
您知道我需要申请哪项权利吗?或者你知道第三种方法可以使用沙盒吗?
谢谢
方法1,使用CGSession(swift):
var arguments = ["-suspend"]
var task = NSTask()
task.arguments = arguments
task.launchPath = "/System/Library/CoreServices/Menu Extras/User.menu/Contents/Resources/CGSession"
task.launch()
Run Code Online (Sandbox Code Playgroud)
方法2,使用IORequestIdle(swift):
var r = IORegistryEntryFromPath(kIOMasterPortDefault, "IOService:/IOResources/IODisplayWrangler")
if (r > 0) {
IORegistryEntrySetCFProperty(r, "IORequestIdle", kCFBooleanTrue)
IOObjectRelease(r)
}
Run Code Online (Sandbox Code Playgroud) 您是否曾在收到此类提交后收到Apple的电子邮件?最奇怪的是,我根本不使用Apple Pay.我应该在哪里看?
Dear developer,
We have discovered one or more issues with your recent delivery for “<APP>". Your delivery was successful, but you may wish to correct the following issues in your next delivery:
Missing Entitlement - App contains references to [Apple Pay] in ‘ <BundleName>', but is missing the required entitlement 'com.apple.developer.in-app-payments'.
After you’ve corrected the issues, you can use Xcode or Application Loader to upload a new binary to iTunes Connect.
Regards,
The App Store team
Run Code Online (Sandbox Code Playgroud)
更新:看到jrg回答(在我的情况下解决了我的问题)我有一个过时的Braintree …
我正在尝试提交我的第一个应用程序,但苹果一直给我发一封电子邮件Missing Push Notification Entitlement(在这里问了一个问题:iOS: Missing Push Notification Entitlement)
这家伙在这里:https : //stackoverflow.com/a/16681454/1555312似乎有一个答案,那就是删除 Entitlements.plist 文件。但是,我不知道这个文件在哪里。你能告诉我如何 1) 找到文件 2) 删除它 3) 重新生成它吗?
我正在尝试将 HealthKit 与我正在构建的应用程序集成,并且我似乎已成功添加了它的权利。我已经使用适当的应用程序 ID 创建并下载了配置文件,并且 Xcode 功能选项卡中的 HealthKit 切换似乎看起来不错:
但是,当我运行该应用程序时,出现以下错误:
HealthKit authorization denied!
Error Domain=com.apple.healthkit Code=4 "Missing com.apple.developer.healthkit entitlement." UserInfo={NSLocalizedDescription=Missing com.apple.developer.healthkit entitlement.}
Run Code Online (Sandbox Code Playgroud)
这是一个奇怪的错误消息,因为Add the "HealthKit" entitlement to your App ID已经检查为已成功完成。
但是,一旦我收到该错误,检查的应用程序 ID 权利就会更改为:
但是在我的开发者帐户的App ID中,App ID显示HealthKit确实已启用。
它在我的配置文件中显示了相同的内容。
而且我只有一个应用程序 ID 和一个配置文件可供选择,因此我不可能将它们混淆。
我的 Xcode 项目中有多个目标,每个目标都有一个关联的域,但又不同。
我希望为所有目标拥有相同的权利文件,并使用 PListBuddy 编写脚本来更改域的值。
我已经有一个可以在构建阶段启动并正确编辑文件的脚本:
case $TARGET_NAME in
"EN6") fireBaseUrl="FOO.app.goo.gl";;
"ES5") fireBaseUrl="BAR.app.goo.gl";;
"SVT-C4") fireBaseUrl="FOOFOO.app.goo.gl";;
"PC5") fireBaseUrl="BARBAR.app.goo.gl";;
*) fireBaseUrl="FOOBAR.app.goo.gl";;
esac
# Universal links used by Firebase
associatedDomainKey="com.apple.developer.associated-domains"
/usr/libexec/PlistBuddy -c "delete ${associatedDomainKey}" app.entitlements
/usr/libexec/PlistBuddy -c "add :${associatedDomainKey} array" -c "add :${associatedDomainKey}:0 string applinks:${fireBaseUrl}" app.entitlements
Run Code Online (Sandbox Code Playgroud)
问题是我有一个“可执行文件是用无效的权利签名的”。在设备上安装应用程序时出错。
我猜这是因为编辑后的权利文件不再与配置文件中包含的权利相对应。
你知道有没有办法做我想做的事?使用 fastlane、shell 脚本或任何东西...(我有 40 个目标,所以我真的只想为所有目标获取一个权利文件)
遵循 iOS 14 阻止访问本地网络的新策略,访问本地网络需要 com.apple.developer.networking.multicast 特殊权限,并且此访问应由用户在授权对话框中确认。虽然这个新功能没有被彻底记录下来,但苹果工程师在论坛上表示,这个授权对话框弹出窗口只在应用尝试发送流量时触发,导致应用只读取网络的问题,如iOS 14 如何触发本地网络对话并检查用户回答?
不幸的是,发送一些数据以触发授权对话框的建议在我们的案例中似乎不起作用,因为我们从未出现过弹出对话框。
我们的应用程序通常只接收 UDP 广播(除少数情况外不发送)。我们已经获得了 com.apple.developer.networking.multicast 权利,将其添加到我们的应用程序权利中,在我们的 Info.plist 中添加了请求的 NSLocalNetworkUsageDescription 并使用 XCode 12.0 手动签署我们的应用程序,并使用包含此权利的配置文件(在这种情况下需要手动代码签名,如https://developer.apple.com/forums/thread/656773?answerId=628537022 中所示)。从那时起,情况有所改善,因为在添加权利之前完全阻止的 UDP 数据包接收有时开始工作,但不幸的是并非总是如此(iOS 14.0.1 上的情况似乎比 iOS 14 上和 iPhone 上比 iPad 上更糟)。
最重要的是,我们从未显示授权对话框,我们的应用程序在隐私/本地网络中未显示为已授权(即使 UDP 接收有效)。我们怀疑这可能是造成这种虚假接收问题的原因。由于似乎授权对话框只在发送数据时显示,我们配置我们的应用程序将数据发送到本地网络以尝试触发对话框,使用以下所有方法:
我查看了此页面,但无法判断哪些权利是特殊的。
我找不到任何关于如何确定哪些需要向 Apple 专门请求的文档。有相关文档吗?
我正在构建一个允许用户编辑文件的 MacOS 应用程序。为了访问文件,我使用了一个安全范围的书签,如下所示:
do {
self.securityScopedBookmark = try asset?.url.bookmarkData(options: .withSecurityScope, includingResourceValuesForKeys: nil, relativeTo: nil)
} catch {
print("failed bookmark. error info: \(error)")
}
Run Code Online (Sandbox Code Playgroud)
当用户完成并且 NSDocument 被取消初始化时,我停止访问书签,如下所示:
deinit {
if let securityScopedBookmark = self.securityScopedBookmark {
do {
var isStale: Bool = false
let url = try URL.init(resolvingBookmarkData: securityScopedBookmark, options: [.withoutUI, .withSecurityScope], relativeTo: nil, bookmarkDataIsStale: &isStale)
url.stopAccessingSecurityScopedResource()
} catch let error as NSError {
print("Bookmark Access Fails: \(error.description)")
}
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当尝试调用 .stopAccessingSecurityScopedBookmark() 时,我收到了几个日志错误。
[scoped] handle 0: sandbox_extension_release error [22: Invalid argument] …Run Code Online (Sandbox Code Playgroud) macos sandbox entitlements appstore-sandbox security-scoped-bookmarks
entitlements ×10
ios ×7
xcode ×5
macos ×2
sandbox ×2
swift ×2
app-id ×1
applepay ×1
deep-linking ×1
healthkit ×1
ios14 ×1
jailbreak ×1
multicast ×1
networking ×1
plistbuddy ×1