打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
iOS中关于entitlements的一些笔记

entitlements,全称 code signing entitlements。
在苹果官网链接如下:
https://developer.apple.com/library/mac/documentation/Miscellaneous/Reference/EntitlementKeyReference/Chapters/AboutEntitlements.html
entitlements描述了binary需要用到哪些权限。

常规的权限包括iCloud、Game Center等,这些在XCode 5的Capabilities中都可以找到。查看更多公开的权限,请猛击此处
启用这些权限后,最后会在你的binary中有所体现,据说用十六进制编辑工具打开你的二进制文件,在结尾处就能看到,但我没有亲自验证哦。

在XCode中启用权限后,签名用的provisioning profile也必须启用相应的功能,否则签名失败。

还有一些系统(私有)权限,则是不公开的。以在iOS7下获取IMSI为例,必须具备com.apple.coretelephony.Identity.get权限。
这些权限需要你自定义entitlements xml文件,格式如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.coretelephony.Identity.get</key>
<true/>
</dict>
</plist>

然后,在XCode的code signing entitlements中填上该xml的路径。

在非越狱的iOS7设备上调试,签名时必须指定provisioning profile,而provisioning profile中必然没有授予com.apple.coretelephony.Identity.get这种权限,部署时便会报错。要是提交到appstore的包中包含了私有权限,那必然又会审核被拒,所以结论是:获取IMSI之类需要权限验证的功能在非越狱iOS7上无解。

越狱过的iOS7设备,装上AppSync,XCode build时选择不指定provisioning profileprovisioning profile指定不指定均可(但是如果你需要用推送或者IAP,那必须用profile),证书随便选开发者签名或者自签名,指定entitlements文件,即可成功获取IMSI。

其他的一些有用的权限:
后台发短信:

<key>com.apple.messages.composeclient</key>
<true/>

使用MobileInstallationInstall安装ipa:(from iOS6)

<key>com.apple.private.mobileinstall.allowedSPI</key>
<array>
<string>Install</string>
<string>Browse</string>
<string>Uninstall</string>
<string>Archive</string>
<string>RemoveArchive</string>
</array>

打开其他app:

1
2
<key>com.apple.springboard.launchapplications</key>
<true/>
1
<code>[[UIApplication sharedApplication] launchApplicationWithIdentifier:@"com.apple.Preferences" suspended:NO];</code>

 

 

如何获取更多私有权限的资料,要么Google,要么自己用ldid查看系统app的权限:

1
ldid -e xxx

你也可以用ldid给app附加entitlements:

1
2
cd MyAppName.app
ldid -Sentitlements.xml MyAppName

ldid和其他一些越狱开发有用的源码和资料可以在这里找到:

https://code.google.com/p/ios-toolchain-based-on-clang-for-linux/

该项目提供了一些预编译好的二进制文件,如果你的os匹配,那可以直接拿来用,不然的话你就要自己编译了。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
iOS Code Signing 学习笔记
iOS打包签名,你真的懂吗?
debugserver
java-Info.plist表示Mac应用程序,但是使用Application Loader提交时提交了ipa
【原创】XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)
【Jenkins】Jenkins集成IOS全自动打包专题
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服