hbuiler怎么配置ios的ios11 权限配置

iOS10,更新功能的项目权限配置和更新的控件问题 - 简书
iOS10,更新功能的项目权限配置和更新的控件问题
另外关于iOS10.0跳转系统设置需要iOS10.0之前跳转系统设置的方法NSURL *url = [NSURL URLWithString:UIApplicationOpenSettingsURLString];[[UIApplication sharedApplication] openURL:url];iOS10.0之后的跳转方法// Option for openURL:options:CompletionHandler: only open URL if it is a valid universal link with an application configured to open it// If there is no application configured, or the user disabled using it to open the link, completion handler called with NOUIKIT_EXTERN NSString *const UIApplicationOpenURLOptionUniversalLinksOnly NS_AVAILABLE_IOS(10_0);//
UIApplicationOpenURLOptionUniversalLinksOnly//
NSURL *url_10 = [NSURL URLWithString:UIApplicationOpenURLOptionUniversalLinksOnly];//
[[UIApplication sharedApplication] openURL:url_10 options:nil completionHandler:nil];// iOS 10 的跳转方式转载的,写的很好为什么一些IOS 权限级别不能看到完全的运行配置
[an error occurred while processing this directive]
新闻与刊物
商业解决方案
网络解决方案
服务与支持
思科网络技术学院
培训、活动与会议
合作伙伴与代理商
中国:简体中文
TAC中文文档
原文件的链接(英语)
此文档是由人工智能自动翻译系统翻译的,请随时参考。
为什么一些IOS 权限级别不能看到完全的运行配置
     
     
     
本文解释权限级别如何在路由器影响一个用户能力执行某些命令。
本文档没有任何特定的前提条件。
本文不限于特定的软硬件版本。
有关文件规则的更多信息请参见“ Cisco技术提示规则”。
当配置对路由器的访问由权限级别时,常见问题是show running或write terminal命令被配置在或在用户权限级别之下。 但是,当用户执行命令时,配置看来是空白的。 这是实际上故意的,如下所述。
write terminal/show running-config命令显示一个空白配置。 此命令显示所有命令当前用户能修改(换句话说,所有命令在或在用户当前权限级别之下)。 命令不应该显示命令在用户当前权限级别之上由于安全注意事项。 如果它,命令类似snmp-server community可能被用于修改路由器的当前配置和获得对路由器的完全使用。
show config/show start-up config命令显示完全配置,但是真不显示实际配置。 反而,命令打印出NVRAM内容,偶然是路由器配置用户当时执行write memory。
要使特权用户查看整个配置在内存,用户将需要有修改权限为在路由器被配置的所有命令。
要说明此概念,请查看被配置如下所示的路由器。
aaa new-model
aaa authentication login default local
aaa authorization exec default local
username john privilege 9 password 0 doe
username six privilege 6 password 0 six
username poweruser privilege 15 password poweruser
username inout password inout
username inout privilege 15 autocommand show running
privilege configure level 8 snmp-server community
privilege exec level 6 show running
privilege exec level 8 configure terminal
要了解此示例,了解权限级别是必要的。 默认情况下,有三命令级别在路由器。
权限级别0 -包括功能失效、启用、退出、帮助和退出命令
权限级别1 -正常级别在T 包括所有用户级命令在路由器>提示
权限级别15 -包括所有启用级命令在Router -提示
命令可用在一个特定的级别在特定路由器可以通过键入a找到? 在路由器提示。 命令可能被移动在权限级别之间通过使用privilege命令,正如示例显示。 当此示例显示本地认证和授权时,命令为TACACS+类似运作或RADIUS认证和EXEC授权。 (更多间隔由路由器控制可能达到带有TACACS+命令授权的实施用服务器。)
以下其它细节在示例和权限级别上当前的用户。
用户六能远程登录和执行show run命令,但是导致的配置将是实际上空白的,因为此用户不能配置什么(configure terminal在第8级,不在第6级)。 我们不希望此用户发现其他用户的用户名和密码或发现简单网络管理协议(SNMP)信息。
用户约翰能远程登录和执行show run命令,但是只看到他能配置的命令(路由器配置的snmp-server community零件,因为此用户是我们的网络管理管理员)。 他能配置snmp-server community,因为configure terminal在第8级(在或在第9级)之下,并且snmp-server community是第8级命令。 我们不希望此用户发现其他用户的用户名和密码,但是我们委托他带有SNMP配置。
用户inout能远程登录,并且,由于为自动命令show running被配置,请参阅显示的配置,但是尔后被断开。
用户poweruser能远程登录和执行show run命令。 此用户在第15级和能发现所有命令。 所有命令是在或在第15级之下; 用户能也在这个阶层查看和控制用户名和密码。
(注册的用户)
声明:此文档是由为思科 TAC 网页内容翻译所开发的英汉机器自动翻译系统翻译的。在有疑问或作出重要的技术支持决策时,请随时参考英文原文。Updated:
Feb 26, 2004Document ID: 23383
[an error occurred while processing this directive]
[an error occurred while processing this directive]iOS开发中的这些权限 - CSDN博客
iOS开发中的这些权限
APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事;
那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打开APP时就向用户请求权限;2.告知用户授权权限后能够获得好处之后,再向用户请求权限;3.在绝对必要的情况下才向用户请求权限,例如:用户访问照片库时请求访问系统相册权限;4.在展示系统权限的对话框前,先向用户显示自定义的对话框,若用户选择不允许,默认无操作,若用户选择允许,再展示系统对话框。
上述情况在开发过程中是经常遇到的,不同方式的选择会影响最后用户交互体验。这一点感悟正是源于上一周工作遇到的问题:适配iOS10,如何获取应用联网权限用以管理系统对话框的显示管理。当我把这个问题解决后,感觉有必要将常用的iOS系统权限做一个总结,以便后用。
相机、麦克风权限
通讯录权限
日历、备忘录权限
引入头文件 @import CoreT
应用启动后,检测应用中是否有联网权限
CTCellularData *cellularData = [[CTCellularData alloc]init];
cellularData.cellularDataRestrictionDidUpdateNotifier = &^(CTCellularDataRestrictedState state){
& //获取联网状态
& switch (state) {
& & & case kCTCellularDataRestricted:
& & & & & NSLog(@&Restricrted&);
& & & case kCTCellularDataNotRestricted:
& & & & & NSLog(@&Not Restricted&);
& & & case kCTCellularDataRestrictedStateUnknown:
& & & & & NSLog(@&Unknown&);
& & & default:
查询应用是否有联网功能
CTCellularData *cellularData = [[CTCellularData alloc]init];
CTCellularDataRestrictedState state = cellularData.restrictedS
&switch (state) {
& case kCTCellularDataRestricted:
& & & NSLog(@&Restricrted&);
& case kCTCellularDataNotRestricted:
& & & NSLog(@&Not Restricted&);
& case kCTCellularDataRestrictedStateUnknown:
& & & NSLog(@&Unknown&);
& default:
相册权限--iOS 9.0之前
导入头文件@import AssetsL
检查是否有相册权限
&ALAuthorizationStatus status = [ALAssetsLibrary authorizationStatus];
switch (status) {
& case ALAuthorizationStatusAuthorized:
& & & NSLog(@&Authorized&);
& case ALAuthorizationStatusDenied:
& & & NSLog(@&Denied&);
& case ALAuthorizationStatusNotDetermined:
& & & NSLog(@&not Determined&);
& case ALAuthorizationStatusRestricted:
& & & NSLog(@&Restricted&);
& default:
相册权限--iOS 8.0之后
导入头文件@import P
检查是否有相册权限
PHAuthorizationStatus photoAuthorStatus = [PHPhotoLibrary authorizationStatus];
switch (photoAuthorStatus) {
& case PHAuthorizationStatusAuthorized:
& & & NSLog(@&Authorized&);
& case PHAuthorizationStatusDenied:
& & & NSLog(@&Denied&);
& case PHAuthorizationStatusNotDetermined:
& & & NSLog(@&not Determined&);
& case PHAuthorizationStatusRestricted:
& & & NSLog(@&Restricted&);
& default:
![Uploading aca7ba38c5f8c0_695906.png . . .]获取相册权限
&[PHPhotoLibrary requestAuthorization:^(PHAuthorizationStatus status) {
& if (status == PHAuthorizationStatusAuthorized) {
& & & NSLog(@&Authorized&);
& & & NSLog(@&Denied or Restricted&);
相机和麦克风权限
导入头文件@import AVF
检查是否有相机或麦克风权限
AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeVideo];//相机权限
AVAuthorizationStatus AVstatus = [AVCaptureDevice authorizationStatusForMediaType:AVMediaTypeAudio];//麦克风权限
switch (AVstatus) {
& case AVAuthorizationStatusAuthorized:
& & & NSLog(@&Authorized&);
& case AVAuthorizationStatusDenied:
& & & NSLog(@&Denied&);
& case AVAuthorizationStatusNotDetermined:
& & & NSLog(@&not Determined&);
& case AVAuthorizationStatusRestricted:
& & & NSLog(@&Restricted&);
& default:
获取相机或麦克风权限
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeVideo completionHandler:^(BOOL granted) {//相机权限
& if (granted) {
& & & NSLog(@&Authorized&);
& & & NSLog(@&Denied or Restricted&);
[AVCaptureDevice requestAccessForMediaType:AVMediaTypeAudio completionHandler:^(BOOL granted) {//麦克风权限
& if (granted) {
& & & NSLog(@&Authorized&);
& & & NSLog(@&Denied or Restricted&);
导入头文件@import CoreL
由于iOS8.0之后定位方法的改变,需要在info.plist中进行配置;
检查是否有定位权限
&BOOL isLocation = [CLLocationManager locationServicesEnabled];
if (!isLocation) {
& NSLog(@&not turn on the location&);
CLAuthorizationStatus CLstatus = [CLLocationManager authorizationStatus];
switch (CLstatus) {
& case kCLAuthorizationStatusAuthorizedAlways:
& & & NSLog(@&Always Authorized&);
& case kCLAuthorizationStatusAuthorizedWhenInUse:
& & & NSLog(@&AuthorizedWhenInUse&);
& case kCLAuthorizationStatusDenied:
& & & NSLog(@&Denied&);
& case kCLAuthorizationStatusNotDetermined:
& & & NSLog(@&not Determined&);
& case kCLAuthorizationStatusRestricted:
& & & NSLog(@&Restricted&);
& default:
获取定位权限
CLLocationManager *manager = [[CLLocationManager alloc] init];
[manager requestAlwaysAuthorization];//一直获取定位信息
[manager requestWhenInUseAuthorization];//使用的时候获取定位信息
在代理方法中查看权限是否改变
- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status{
&switch (status) {
& case kCLAuthorizationStatusAuthorizedAlways:
& & & NSLog(@&Always Authorized&);
& case kCLAuthorizationStatusAuthorizedWhenInUse:
& & & NSLog(@&AuthorizedWhenInUse&);
& case kCLAuthorizationStatusDenied:
& & & NSLog(@&Denied&);
& case kCLAuthorizationStatusNotDetermined:
& & & NSLog(@&not Determined&);
& case kCLAuthorizationStatusRestricted:
& & & NSLog(@&Restricted&);
& default:
检查是否有通讯权限
& UIUserNotificationSettings *settings = [[UIApplication sharedApplication] currentUserNotificationSettings];
switch (settings.types) {
& case UIUserNotificationTypeNone:
& & & NSLog(@&None&);
& case UIUserNotificationTypeAlert:
& & & NSLog(@&Alert Notification&);
& case UIUserNotificationTypeBadge:
& & & NSLog(@&Badge Notification&);
& case UIUserNotificationTypeSound:
& & & NSLog(@&sound Notification'&);
& default:
获取推送权限
UIUserNotificationSettings *setting = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge
categories:nil];
[[UIApplication sharedApplication] registerUserNotificationSettings:setting];
通讯录权限
导入头文件 @import AddressB
检查是否有通讯录权限
&ABAuthorizationStatus ABstatus = ABAddressBookGetAuthorizationStatus();
switch (ABstatus) {
& case kABAuthorizationStatusAuthorized:
& & & NSLog(@&Authorized&);
& case kABAuthorizationStatusDenied:
& & & NSLog(@&Denied'&);
& case kABAuthorizationStatusNotDetermined:
& & & NSLog(@&not Determined&);
& case kABAuthorizationStatusRestricted:
& & & NSLog(@&Restricted&);
& default:
获取通讯录权限
ABAddressBookRef addressBook = ABAddressBookCreateWithOptions(NULL, NULL);
ABAddressBookRequestAccessWithCompletion(addressBook, ^(bool granted, CFErrorRef error) {
& if (granted) {
& & & NSLog(@&Authorized&);
& & & CFRelease(addressBook);
& & & NSLog(@&Denied or Restricted&);
日历、备忘录权限
导入头文件
检查是否有日历或者备忘录权限
&typedef NS_ENUM(NSUInteger, EKEntityType) {
& EKEntityTypeEvent,//日历
& EKEntityTypeReminder //备忘
EKAuthorizationStatus EKstatus = [EKEventStore &authorizationStatusForEntityType:EKEntityTypeEvent];
switch (EKstatus) {
& case EKAuthorizationStatusAuthorized:
& & & NSLog(@&Authorized&);
& case EKAuthorizationStatusDenied:
& & & NSLog(@&Denied'&);
& case EKAuthorizationStatusNotDetermined:
& & & NSLog(@&not Determined&);
& case EKAuthorizationStatusRestricted:
& & & NSLog(@&Restricted&);
& default:
获取日历或备忘录权限
EKEventStore *store = [[EKEventStore alloc]init];
[store requestAccessToEntityType:EKEntityTypeEvent completion:^(BOOL granted, NSError * _Nullable error) {
& if (granted) {
& & & NSLog(@&Authorized&);
& & & NSLog(@&Denied or Restricted&);
素有获取权限的方法,多用于用户第一次操作应用,iOS 8.0之后,将这些设置都整合在一起,并且可以开启或关闭相应的权限。所有的权限都可以通过下面的方法打开:
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:UIApplicationOpenSettingsURLString]];
本文已收录于以下专栏:
相关文章推荐
有时候,因为权限等问题,我们需要让用户可以在APP内直接通过点击确认跳转到系统设置中的某个条目或者当前APP设置信息去修改一些内容。iOS8以下开放了这个语句用于跳转:[[UIApplication ...
从ios7开始,用户可以在设置-&隐私-&中开启或关闭某些系统权限,比如访问相册,相机 ,通讯录,地图,麦克风等。因此,在我们的程序中,如果要访问系统的某些功能,则最好判断一下权限是否开启。否则用户不...
1、从互联网上或者其他途径拿过来的工程代码,往往会报下面的提示:
  (1)打开文件的时候出现窗口提示You don’t have permission to save the file “proj...
作者:Jack_lin(公众号ID:iOSDevSkills)
APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事。
在iOS开发中我们经常会调用系统相机和麦克风,但是这些权限都是用户可以控制的,当APP没有权限调用这些手机资源,但是我们没有判断,直接去调用了,这样会出现问题。
麦克风权限
iOS开发中的权限适配问题总结
a、如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:
1.在用户打开APP时就向用户请求权限;
2.告知用户授权权限后能够获得好处之后...
APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事。
那如何提高APP获取iOS系统权限...
在实际项目中,我们经常需要访问设备的摄像头或者相册,当第一次安装某个App的时候,系统便会弹出授权对话框,要求用户做出是否授权的判断。整体逻辑比较简单,但是在使用过程中需要对用户体验进行优化,否则会出...
APP开发避免不开系统权限的问题,如何在APP以更加友好的方式向用户展示系统权限,似乎也是开发过程中值得深思的一件事。
那如何提高APP获取iOS系统权限的通过率呢?有以下几种方式:1.在用户打...
作者:Amin链接:/p/来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。写在前面APP开发避免不开系...
他的最新文章
讲师:宋宝华
讲师:何宇健
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)iOS证书及配置文件设置2收藏分享举报{&debug&:false,&apiRoot&:&&,&paySDK&:&https:\u002F\\u002Fapi\u002Fjs&,&wechatConfigAPI&:&\u002Fapi\u002Fwechat\u002Fjssdkconfig&,&name&:&production&,&instance&:&column&,&tokens&:{&X-XSRF-TOKEN&:null,&X-UDID&:null,&Authorization&:&oauth c3cef7c66aa9e6a1e3160e20&}}{&database&:{&Post&:{&&:{&isPending&:false,&contributes&:[],&title&:&iOS证书及配置文件设置&,&author&:&leo-meng&,&content&:&本文结合作者的工作经历对iOS的证书(certificate)及配置文件(provisioning profile)做个总结。\u003Cbr\u003E\u003Cbr\u003E\u003Cb\u003E1. 发布流程\u003C\u002Fb\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002F870e1ec1cadb7_b.png\& class=\&content_image\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='0'%20height='0'&&\u002Fsvg&\& class=\&content_image lazy\& data-actualsrc=\&https:\u002F\\u002F870e1ec1cadb7_b.png\&\u003E\u003Cbr\u003E在开发及发布过程中,都会用到证书及相关的配置文件。规范的配置可以保证你的应用在上架后不会因为证书问题被审核拒绝或者影响用户使用。\u003Cbr\u003E\u003Cbr\u003E\u003Cb\u003E2. 代码签名(Code signing)\u003C\u002Fb\u003E\u003Cbr\u003E\u003Cbr\u003E只有通过代码签名的应用才能保证其来源是可靠的,并且代码是完整的、没被更改的。代码签名由签名标示(signing identity)及配置文件(provisioning profile)共同构成。\u003Cbr\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002F958b38acd6a_b.png\& class=\&content_image\&\u003E签名标识(由苹果提供的算法生成的一对公私钥组成),Xcode通过你的签名来创建应用。\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='0'%20height='0'&&\u002Fsvg&\& class=\&content_image lazy\& data-actualsrc=\&https:\u002F\\u002F958b38acd6a_b.png\&\u003E签名标识(由苹果提供的算法生成的一对公私钥组成),Xcode通过你的签名来创建应用。\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002F8bbd7e4bb35ecc39f73b99_b.png\& data-rawwidth=\&979\& data-rawheight=\&605\& class=\&origin_image zh-lightbox-thumb\& width=\&979\& data-original=\&https:\u002F\\u002F8bbd7e4bb35ecc39f73b99_r.png\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='979'%20height='605'&&\u002Fsvg&\& data-rawwidth=\&979\& data-rawheight=\&605\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&979\& data-original=\&https:\u002F\\u002F8bbd7e4bb35ecc39f73b99_r.png\& data-actualsrc=\&https:\u002F\\u002F8bbd7e4bb35ecc39f73b99_b.png\&\u003E\u003Cbr\u003E如图所示,Juan Chavez上传他的公钥到苹果,用以生成属于他的开发\u002F产品环境证书(certificates),持有他私钥的电脑生成的应用才能匹配成功,从而保证编译\u002F提交成功的第一个条件。编译需要在本机安装开发环境的.cer证书,发布需要在苹果官方持有有效的产品.cer证书。\u003Cp\u003E保证编译\u002F提交成功的第二个条件是配置文件(provisioning profile)。该文件在\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\\u002F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E苹果开发者后台\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E中生成,关于如何生成,参考3.2。\u003C\u002Fp\u003E\u003Cp\u003E\u003Cb\u003E3. 证书、配置文件\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cbr\u003E如果你恰好拥有APP的后台管理员权限,那么在\u003Ca href=\&http:\u002F\\u002F?target=http%3A\u002F\\u002F\& class=\& wrap external\& target=\&_blank\& rel=\&nofollow noreferrer\&\u003E苹果开发者后台\u003Ci class=\&icon-external\&\u003E\u003C\u002Fi\u003E\u003C\u002Fa\u003E将可以查看到\&Certificates, IDs & Profiles\&菜单。该目录下,有Certificates, Identifiers, Devices & Provisioning Profiles四个二级菜单。它们的关系用一张图来表示:\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fa60c6c65a388d58e166cc189f05da119_b.png\& data-rawwidth=\&712\& data-rawheight=\&406\& class=\&origin_image zh-lightbox-thumb\& width=\&712\& data-original=\&https:\u002F\\u002Fa60c6c65a388d58e166cc189f05da119_r.png\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='712'%20height='406'&&\u002Fsvg&\& data-rawwidth=\&712\& data-rawheight=\&406\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&712\& data-original=\&https:\u002F\\u002Fa60c6c65a388d58e166cc189f05da119_r.png\& data-actualsrc=\&https:\u002F\\u002Fa60c6c65a388d58e166cc189f05da119_b.png\&\u003E\u003Cbr\u003E(1) 证书(Certificates)\u003Cbr\u003E\u003Cbr\u003E证书是用于应用签名的,证书包含开发(development)和产品(production)两套环境。\u003Cbr\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002F908b53d9ff79bcf89dc9451_b.jpg\& data-rawwidth=\&1011\& data-rawheight=\&714\& class=\&origin_image zh-lightbox-thumb\& width=\&1011\& data-original=\&https:\u002F\\u002F908b53d9ff79bcf89dc9451_r.jpg\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1011'%20height='714'&&\u002Fsvg&\& data-rawwidth=\&1011\& data-rawheight=\&714\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1011\& data-original=\&https:\u002F\\u002F908b53d9ff79bcf89dc9451_r.jpg\& data-actualsrc=\&https:\u002F\\u002F908b53d9ff79bcf89dc9451_b.jpg\&\u003E\u003Cbr\u003E\u003Cbr\u003E一般而言,开发环境会为每位开发者创建一个开发者证书,发布版本会有一个共同的产品证书。此外,如果应用包含其他的调用服务,如通知 (app push notification service),则会单独生成相应的证书。\u003Cp\u003E生成证书的步骤就不再累述了,按引导完成即可。\u003C\u002Fp\u003E\u003Cp\u003E(2) 配置文件(Provisioning Profiles)\u003C\u002Fp\u003E\u003Cp\u003E相对于证书(certificates),配置文件(provisioning profiles)也有开发\u002F产品两套。\u003C\u002Fp\u003E\u003Cp\u003E用于开发的配置文件(iOS Development)\u003Cbr\u003E该文件主要用于开发者在沙盒手机上测试,因此创建该配置文件时,需要勾选相关的开发者证书(哪些开发人员编译的包有权限运行),及相关沙盒手机设备(该设备在Devices中注册)。\u003Cbr\u003E\u003Cbr\u003E用于发布的配置文件(iOS Distribution)\u003Cbr\u003E该文件用于上传包到TestFlight及苹果应用商城。因此创建该配置文件时,需要勾选用于发布的证书。\u003Cbr\u003E\u003Cbr\u003E\u003Cb\u003E值得注意的是\u003C\u002Fb\u003E,一旦任何的证书失效,其相关的配置文件也将变得无效,此时可以重新生成新的证书,但只需要编辑对应的配置文件,刷新它的相关证书即可。\u003C\u002Fp\u003E\u003Cp\u003E在Xcode中开发\u002F发布切换证书及配置文件:\u003C\u002Fp\u003E\u003Cp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002F287b38db06faed79d65fcdac_b.png\& data-rawwidth=\&1246\& data-rawheight=\&802\& class=\&origin_image zh-lightbox-thumb\& width=\&1246\& data-original=\&https:\u002F\\u002F287b38db06faed79d65fcdac_r.png\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='1246'%20height='802'&&\u002Fsvg&\& data-rawwidth=\&1246\& data-rawheight=\&802\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&1246\& data-original=\&https:\u002F\\u002F287b38db06faed79d65fcdac_r.png\& data-actualsrc=\&https:\u002F\\u002F287b38db06faed79d65fcdac_b.png\&\u003E\u003Cb\u003E4. p12文件\u003C\u002Fb\u003E\u003C\u002Fp\u003E\u003Cp\u003E如上述所示,证书(certificates)是验证应用是否有效的凭证。但证书都是直接安装在mac系统里的,如何让它导入到其他系统中,以便通过该应用ID去请求苹果的其他服务(如通知等)?\u003C\u002Fp\u003E\u003Cp\u003E这个时候,就需要用到.p12文件。.p12文件是通过特殊格式化及加密处理的,包含应用证书的文件。其导出方式如下:\u003C\u002Fp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fea3efe4a6192_b.png\& data-rawwidth=\&640\& data-rawheight=\&317\& class=\&origin_image zh-lightbox-thumb\& width=\&640\& data-original=\&https:\u002F\\u002Fea3efe4a6192_r.png\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='640'%20height='317'&&\u002Fsvg&\& data-rawwidth=\&640\& data-rawheight=\&317\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&640\& data-original=\&https:\u002F\\u002Fea3efe4a6192_r.png\& data-actualsrc=\&https:\u002F\\u002Fea3efe4a6192_b.png\&\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fe46edd4ca42f44ecdd44bbbe6bba7579_b.png\& data-rawwidth=\&563\& data-rawheight=\&216\& class=\&origin_image zh-lightbox-thumb\& width=\&563\& data-original=\&https:\u002F\\u002Fe46edd4ca42f44ecdd44bbbe6bba7579_r.png\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='563'%20height='216'&&\u002Fsvg&\& data-rawwidth=\&563\& data-rawheight=\&216\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&563\& data-original=\&https:\u002F\\u002Fe46edd4ca42f44ecdd44bbbe6bba7579_r.png\& data-actualsrc=\&https:\u002F\\u002Fe46edd4ca42f44ecdd44bbbe6bba7579_b.png\&\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002F70a6bf3a51ac97abc8da_b.png\& data-rawwidth=\&444\& data-rawheight=\&298\& class=\&origin_image zh-lightbox-thumb\& width=\&444\& data-original=\&https:\u002F\\u002F70a6bf3a51ac97abc8da_r.png\&\u003E\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='444'%20height='298'&&\u002Fsvg&\& data-rawwidth=\&444\& data-rawheight=\&298\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&444\& data-original=\&https:\u002F\\u002F70a6bf3a51ac97abc8da_r.png\& data-actualsrc=\&https:\u002F\\u002F70a6bf3a51ac97abc8da_b.png\&\u003E\u003Cp\u003E\u003Cnoscript\u003E\u003Cimg src=\&https:\u002F\\u002Fee54b29d1bcc6a2ffdfcf7_b.png\& data-rawwidth=\&434\& data-rawheight=\&198\& class=\&origin_image zh-lightbox-thumb\& width=\&434\& data-original=\&https:\u002F\\u002Fee54b29d1bcc6a2ffdfcf7_r.png\&\u003E在很多的移动应用代理平台,既是用.p12的方法,让用户提交自己应用的p12文件到代理平台,由平台来中转相关请求\u002F响应。\u003C\u002Fnoscript\u003E\u003Cimg src=\&data:image\u002Fsvg+utf8,&svg%20xmlns='http:\u002F\u002Fwww.w3.org\u002FFsvg'%20width='434'%20height='198'&&\u002Fsvg&\& data-rawwidth=\&434\& data-rawheight=\&198\& class=\&origin_image zh-lightbox-thumb lazy\& width=\&434\& data-original=\&https:\u002F\\u002Fee54b29d1bcc6a2ffdfcf7_r.png\& data-actualsrc=\&https:\u002F\\u002Fee54b29d1bcc6a2ffdfcf7_b.png\&\u003E在很多的移动应用代理平台,既是用.p12的方法,让用户提交自己应用的p12文件到代理平台,由平台来中转相关请求\u002F响应。\u003C\u002Fp\u003E\u003Cp\u003E此外,由于用于发布的证书有且只能有一个处于激活状态,而证书的生成只能包含一个开发者ID的私钥。如果团队中需要多人承担发布版本的职能,目前能想到的办法为:\u003C\u002Fp\u003E\u003Col\u003E\u003Cli\u003E创建一个专门用于发布版本的开发者ID,用其绑定发布证书\u003Cbr\u003E\u003C\u002Fli\u003E\u003Cli\u003E导出该开发者ID证书的.p12文件,并分享给相关发布人员\u003Cbr\u003E\u003C\u002Fli\u003E\u003Cli\u003E发布人员发布版本时,通过公共开发者ID打包发布\u003C\u002Fli\u003E\u003C\u002Fol\u003E\u003Cbr\u003E如果读者有更好的办法,请赐教,谢谢。\u003Cbr\u003E希望这篇文章能为你带来帮助!&,&updated&:new Date(&T02:42:49.000Z&),&canComment&:false,&commentPermission&:&anyone&,&commentCount&:1,&collapsedCount&:0,&likeCount&:2,&state&:&published&,&isLiked&:false,&slug&:&&,&isTitleImageFullScreen&:false,&rating&:&none&,&titleImage&:&&,&links&:{&comments&:&\u002Fapi\u002Fposts\u002F2Fcomments&},&reviewers&:[],&topics&:[{&url&:&https:\u002F\\u002Ftopic\u002F&,&id&:&&,&name&:&iOS 开发&}],&adminClosedComment&:false,&titleImageSize&:{&width&:0,&height&:0},&href&:&\u002Fapi\u002Fposts\u002F&,&excerptTitle&:&&,&tipjarState&:&closed&,&annotationAction&:[],&sourceUrl&:&&,&pageCommentsCount&:1,&hasPublishingDraft&:false,&snapshotUrl&:&&,&publishedTime&:&T10:42:49+08:00&,&url&:&\u002Fp\u002F&,&lastestLikers&:[{&bio&:&iOS Dev&,&isFollowing&:false,&hash&:&ee0a64ba4477afae56a188&,&uid&:446700,&isOrg&:false,&slug&:&cookov&,&isFollowed&:false,&description&:&iOS Dev&,&name&:&cookov&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fcookov&,&avatar&:{&id&:&8acd7bffe813a5e3e4fa5&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false},{&bio&:&这个人很懒。。。&,&isFollowing&:false,&hash&:&26f35f189e5e9dcb3f46a&,&uid&:04,&isOrg&:false,&slug&:&kris_11&,&isFollowed&:false,&description&:&&,&name&:&邓晖&,&profileUrl&:&https:\u002F\\u002Fpeople\u002Fkris_11&,&avatar&:{&id&:&v2-b90e4a222b481c7b1ef62fea21ceaceb&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}],&summary&:&\u003Cimg src=\&http:\u002F\\u002F8bbd7e4bb35ecc39f73b99_200x112.png\& data-rawwidth=\&979\& data-rawheight=\&605\& class=\&origin_image inline-img zh-lightbox-thumb\& data-original=\&http:\u002F\\u002F8bbd7e4bb35ecc39f73b99_r.png\&\u003E本文结合作者的工作经历对iOS的证书(certificate)及配置文件(provisioning profile)做个总结。 \u003Cb\u003E1. 发布流程\u003C\u002Fb\u003E 在开发及发布过程中,都会用到证书及相关的配置文件。规范的配置可以保证你的应用在上架后不会因为证书问题被审核拒绝或者影响用户使用。 \u003Cb\u003E2. 代码…\u003C\u002Fb\u003E&,&reviewingCommentsCount&:0,&meta&:{&previous&:null,&next&:null},&annotationDetail&:null,&commentsCount&:1,&likesCount&:2,&FULLINFO&:true}},&User&:{&leo-meng&:{&isFollowed&:false,&name&:&shskey&,&headline&:&&,&avatarUrl&:&https:\u002F\\u002F50\u002Fv2-c63c20dc1471b67feacee_s.jpg&,&isFollowing&:false,&type&:&people&,&slug&:&leo-meng&,&bio&:&知识从聆听开始&,&hash&:&d799931adb9d1c30ad96&,&uid&:92,&isOrg&:false,&description&:&&,&badge&:{&identity&:null,&bestAnswerer&:null},&profileUrl&:&https:\u002F\\u002Fpeople\u002Fleo-meng&,&avatar&:{&id&:&v2-c63c20dc1471b67feacee&,&template&:&https:\u002F\\u002F50\u002F{id}_{size}.jpg&},&isOrgWhiteList&:false,&isBanned&:false}},&Comment&:{},&favlists&:{}},&me&:{},&global&:{&experimentFeatures&:{&ge3&:&ge3_9&,&ge2&:&ge2_1&,&nwebStickySidebar&:&sticky&,&androidPassThroughPush&:&getui&,&newMore&:&new&,&liveReviewBuyBar&:&live_review_buy_bar_2&,&liveStore&:&ls_a2_b2_c1_f2&,&searchHybridTabs&:&without-tabs&,&isOffice&:&false&,&homeUi2&:&default&,&answerRelatedReadings&:&qa_recommend_with_ads_and_article&,&remixOneKeyPlayButton&:&headerButton&,&asdfadsf&:&asdfad&,&qrcodeLogin&:&qrcode&,&newBuyBar&:&livenewbuy3&,&isShowUnicomFreeEntry&:&unicom_free_entry_off&,&newMobileColumnAppheader&:&new_header&,&zcmLighting&:&zcm&,&favAct&:&default&,&appStoreRateDialog&:&close&,&mobileQaPageProxyHeifetz&:&m_qa_page_nweb&,&iOSNewestVersion&:&4.2.0&,&default&:&None&,&wechatShareModal&:&wechat_share_modal_show&,&qaStickySidebar&:&sticky_sidebar&,&androidProfilePanel&:&panel_b&,&nwebWriteAnswer&:&default&}},&columns&:{&next&:{}},&columnPosts&:{},&columnSettings&:{&colomnAuthor&:[],&uploadAvatarDetails&:&&,&contributeRequests&:[],&contributeRequestsTotalCount&:0,&inviteAuthor&:&&},&postComments&:{},&postReviewComments&:{&comments&:[],&newComments&:[],&hasMore&:true},&favlistsByUser&:{},&favlistRelations&:{},&promotions&:{},&draft&:{&titleImage&:&&,&titleImageSize&:{},&isTitleImageFullScreen&:false,&canTitleImageFullScreen&:false,&title&:&&,&titleImageUploading&:false,&error&:&&,&content&:&&,&draftLoading&:false,&globalLoading&:false,&pendingVideo&:{&resource&:null,&error&:null}},&drafts&:{&draftsList&:[],&next&:{}},&config&:{&userNotBindPhoneTipString&:{}},&recommendPosts&:{&articleRecommendations&:[],&columnRecommendations&:[]},&env&:{&edition&:{},&isAppView&:false,&appViewConfig&:{&content_padding_top&:128,&content_padding_bottom&:56,&content_padding_left&:16,&content_padding_right&:16,&title_font_size&:22,&body_font_size&:16,&is_dark_theme&:false,&can_auto_load_image&:true,&app_info&:&OS=iOS&},&isApp&:false},&message&:{&newCount&:0},&pushNotification&:{&newCount&:0}}}

我要回帖

更多关于 ios 10 权限配置 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信