iOS10适配

前言:
此记录是我在适配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:^{}];
}

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

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值