关闭

iOS10适配

标签: iosiOS10适配
817人阅读 评论(0) 收藏 举报
分类:

前言:

此记录是我在适配iOS10时的体验,供大家参考指正。

我的项目的适配工作主要有以下两点:

1.访问权限的添加
在info.plist文件添加权限,APP中用到了什么权限就添加什么权限,在iOS10中如果是因为缺少权限引起的崩溃,在控制台会打印出相应日志。
下图是缺少相册权限的日志:

这里写图片描述

方式一:
key值是固定的,string的值可以随意写
其中:key值是固定的,string的值可以随意写
方式二:
也可采用下图的方式添加(推荐使用)
这里写图片描述

2.iOS废弃API的更换

在iOS中联系人框架就已经由AddressBook更换成了Contacts,在iOS10中,如果不更换新的框架,在选取联系人时,会引起程序崩溃。
新联系人框架参考资料:http://www.jianshu.com/p/df0ea100c3da

    // 1.创建选择联系人的控制器
    CNContactPickerViewController *contactVc = [[CNContactPickerViewController alloc] init];
    // 2.设置代理
    contactVc.delegate = self;
    // 3.弹出控制器
    [self presentViewController:contactVc animated:YES completion:nil];

#pragma mark - <CNContactPickerDelegate>
// 当选中某一个联系人时会执行该方法
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContact:(CNContact *)contact
{
    // 1.获取联系人的姓名
    NSString *lastname = contact.familyName;
    NSString *firstname = contact.givenName;
    NSLog(@"%@ %@", lastname, firstname);

    // 2.获取联系人的电话号码
    NSArray *phoneNums = contact.phoneNumbers;
    for (CNLabeledValue *labeledValue in phoneNums) {
        // 2.1.获取电话号码的KEY
        NSString *phoneLabel = labeledValue.label;

        // 2.2.获取电话号码
        CNPhoneNumber *phoneNumer = labeledValue.value;
        NSString *phoneValue = phoneNumer.stringValue;

        NSLog(@"%@ %@", phoneLabel, phoneValue);
    }
}


// 当选中某一个联系人的某一个属性时会执行该方法
- (void)contactPicker:(CNContactPickerViewController *)picker didSelectContactProperty:(CNContactProperty *)contactProperty
{
    _payeeName.text = @"";
    _payeePhone.text = @"";

    // 获取姓名
    NSString *lastname = contactProperty.contact.familyName;
    NSString *firstname = contactProperty.contact.givenName;
    NSLog(@"%@ %@", lastname, firstname);
    _payeeName.text = [NSString stringWithFormat:@"%@%@", [CSIIConfigDictUtil handleStr:firstname], [CSIIConfigDictUtil handleStr:lastname]];

    // 获取手机号
    if ([CNContactPhoneNumbersKey isEqualToString:contactProperty.key]) {
        CNPhoneNumber *phoneNumber = contactProperty.value;
        NSString *phone = [CSIIConfigDictUtil handleStr:phoneNumber.stringValue];
        NSLog(@"%@", phone);

        // 过滤掉非数字字符
        NSCharacterSet *set = [[NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
        phone = [[phone componentsSeparatedByCharactersInSet:set] componentsJoinedByString:@""];

        if (phone.length > 11) {
            _payeePhone.text = [phone substringFromIndex:phone.length-11];
        } else {
            _payeePhone.text = phone;
        }
    }
}

// 点击了取消按钮会执行该方法
- (void)contactPickerDidCancel:(CNContactPickerViewController *)picker
{
    [self dismissViewControllerAnimated:YES completion:^{}];
}

在适配工作中暂时就遇到这两点,以后遇到别的问题会再做记录。

1
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

iOS调用系统通讯录(适配iOS9、iOS10)

由于系统的通讯录在iOS9的时候提供了新的api,所以我们2种框架都使用。首先我们要导入框架 /// iOS 9前的框架 #import #import /// iOS 9的新框架 #imp...
  • u014540820
  • u014540820
  • 2016-09-22 17:38
  • 4835

iOS :获取通讯录 新的contact框架

一 前言 最近项目要求 获取用户通讯录 这一功能,发现以前的AddressBook框架已经被弃用了,iOS 9.0 以后改为Contacts框架。但是网上大多是swift版本,OC版本较少。花了一些...
  • Y940307
  • Y940307
  • 2016-01-29 09:33
  • 3339

iOS获取手机通讯录(两种框架详解)

今天浏览简书,看了好多获取通讯录的,都是使用AddressBook.framework框架,没有使用Contacts.framework框架的,虽然这两种框架都可以获得手机里的通讯录信息,可是,官方A...
  • hj7jay
  • hj7jay
  • 2016-07-01 09:55
  • 8593

iOS9 通讯录 CNContact

iOS9 通讯录 CNContact  ContactsUI:系统通讯录视图,选择联系人 //弹出联系人列表 CNContactPickerViewController * con = [[CN...
  • u011263484
  • u011263484
  • 2016-05-18 16:09
  • 2349

iOS9联系人保存详解

苹果在iOS9的SDK中废除了AddressBookUI.framework的一些功能(是不是这个库都废除了,有待验证),具体和保存联系人相关的几个系统界面如下: 联系人选择:AddressBook...
  • sun2728
  • sun2728
  • 2015-10-09 11:04
  • 2519

项目中友盟推送适配iOS10

iOS10出来也有一段时间了,对项目中的一些功能也适配了iOS10,但对于苹果这次改动较大的推送本人在当前项目中却没有进行适配,因为我发现在iOS10环境下我的推送还是可以用。当然适配iOS10是必然...
  • u010105969
  • u010105969
  • 2016-10-10 19:25
  • 1515

总结适配IOS10需要注意的问题

就前不久,苹果刚刚对外正式发布了新的操作系统IOS10。悲剧的是就在发布新系统的当天公司就急着要发布一个新版本,问题来了。。。谁知道APP在IOS10上会遇到什么鬼情况!最怕的就是闪退。。。于是在上线...
  • He_jiabin
  • He_jiabin
  • 2016-09-26 17:01
  • 3995

iOS10适配 设置图片圆角的问题

网络请求库:AFNetWorking 网络图片处理库:SDWebImage 我们的项目在升级完XCode8后,发现有的圆角图片是不能显示的,但是在XCode的View UI Hierarchy工具中查...
  • jijiji000111
  • jijiji000111
  • 2016-09-18 18:38
  • 1845

UITableView删除按钮iOS10适配

在开发中,经常会遇到修改tableView的删除按钮的情况;默认情况下,当系统语言是中文时,删除按钮显示【删除】,英文时,显示为【del】iOS9及之前删除按钮是cell的子视图,所以我们只需要在定制...
  • ajdfhajdkfakr
  • ajdfhajdkfakr
  • 2018-01-08 16:41
  • 28

iOS 10 开发适配系列 之 权限Crash问题

升级 iOS 10 之后目测坑还是挺多的,记录一下吧,看看到时候会不会成为一个系列。 直入正题吧 今天在写 Swift 3 相关的一个项目小小练下手,发现调用相机,崩了。试试看调用相册,又特么崩了...
  • JinigW
  • JinigW
  • 2016-11-01 13:03
  • 136
    个人资料
    • 访问:20546次
    • 积分:261
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:2篇
    • 译文:0篇
    • 评论:0条
    文章分类