Xcode8出现的一些常见问题_hbblzjy的博客-程序员秘密

技术标签: iOS开发等常用知识点  Xcode8  调试  多余输出语句    

消除无用输出语句问题:Xcode8之后,新创建的项目在手机上运行后,就会在输出窗口,输出一大堆乱七八糟的日志,对我们几乎没有用,如图:

解决办法:

【product】-【scheme】-【Edit Scheme】-【Run】-【Argument】-【Environment Variable】添加key:Value【OS_ACTIVITY_MODE : disable】即可。

但是在我们用真机调试的时候,NSLog也不工作了。我们在输出窗口看不到我们想要的日志了。

我们可以定义一个宏即可输出自己的日志,

#ifdef DEBUG
#define CLLog(format, ...) printf("[%s] %s [第%d行] %s\n", __TIME__, __FUNCTION__, __LINE__,
 [[NSString stringWithFormat:format, ## __VA_ARGS__] UTF8String]);
#else
#define NSLog(format, ...)
#endif

访问权限问题

在iOS10中,如果你的App想要访问用户的相机、相册、麦克风、通讯录等等权限,都需要进行相关的配置,不然会直接crash。
需要在info.plist中添加App需要的一些设备权限。

NSBluetoothPeripheralUsageDescription
访问蓝牙

NSCalendarsUsageDescription
访问日历

NSCameraUsageDescription
相机

NSPhotoLibraryUsageDescription
相册

NSContactsUsageDescription
通讯录

NSLocationAlwaysUsageDescription
始终访问位置

NSLocationUsageDescription
位置

NSLocationWhenInUseUsageDescription
在使用期间访问位置

NSMicrophoneUsageDescription
麦克风

NSAppleMusicUsageDescription
访问媒体资料库

NSHealthShareUsageDescription
访问健康分享

NSHealthUpdateUsageDescription
访问健康更新

NSMotionUsageDescription
访问运动与健身

NSRemindersUsageDescription
访问提醒事项

从2017年1月1日起,强制使用https,所有新提交的 app 默认不允许使用NSAllowsArbitraryLoads来绕过ATS的限制 安全传输不再支持SSLv3。
这里写图片描述

这里写图片描述

兼容iPad时要注意以下问题

ERROR ITMS-90474: "Bundle Invalid. iPad Multitasking support requires there orientations:'UIInterfaceOrientationPortrait,
UIIinterfaceOrientationPortraitUpsideDown,UIInterfaceOrientationLandscapeLeft,
UIInterfaceOrientationLandscapeRight'. Found 'UIInterfaceOrientationPortrait' in bundle.t submit to Apple

这是由于提交app适配ios9的ipad的分屏导致的,只要如下图操作就可以了
这里写图片描述

OpenUrl使用方法被废弃

在iOS10版本之前,直接使用[[UIApplication sharedApplication] openURL方法就跳转指定网页和链接
目前已经在iOS10已经被废弃

编译器Xcode8新建项目的工程配置

注意:在Xcode8工程配置的general选项卡中,使用更详细signing选项替换了原有的team选项。
使用Xcode8打开工程后,项目的provisonfile配置出了问题
进入工程之后选中你的项目文件依次点击:
project->target->general
查看并进行手动配置

判断系统版本

在iOS10中读取不到iOS10的系统版本
简单的操作就能判断是否是iOS10:

if ([[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){.majorVersion = 9,
 .minorVersion = 1, .patchVersion = 0}]) { NSLog(@"Hello from > iOS 9.1");}

if ([NSProcessInfo.processInfo isOperatingSystemAtLeastVersion:(NSOperatingSystemVersion){
   9,3,0}]) 
{ NSLog(@"Hello from > iOS 9.3");}

if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_9_0) { // do stuff for iOS 9 and newer} 
else { // do stuff for older versions than iOS 9}

UILable的文字显示问题

在iOS10中字体发生了变化,这导致一些文字在原有的宽高约束下可能会出现显示不完整或者留白的情况,单行UILabel使用label.adjustsFontSizeToFitWidth = YES;进行调整

安全传输协议

iOS 10 中info.plist文件新加入了NSAllowsArbitraryLoadsInWebContent键,允许任意web页面加载,苹果会用 ATS 来保护你的app,安全传输不支持SSLv3。

Xcode8之后上传注意

  1. ios10推送获取不到devicetoken 注意在xcode8上要打开push Notifications
    这里写图片描述
  2. 证书管理
    用Xcode8打开工程后,比较明显的就是下图了,这个是苹果的新特性,可以帮助我们自动管理证书。建议大家勾选这个Automatically manage signing。
    这里写图片描述
  3. Xcode8上传应用包成功后,iTunes里不显示构建版本
    iOS10、Xcode8升级以后,打包使用Application Loader上传应用时,应用上传成功,但是在商店里却找不到构建版本,连“+”都没。
    这里写图片描述
    于是找资料才发现,从iOS10开始,苹果更加注重对用于隐私的保护,app里边如果需要访问用户隐私,必须要做描述,所以要在plist文件中添加描述;
    这里写图片描述
    或者在此处勾选需要添加的权限
    这里写图片描述
    注意,添加的时候,末尾不要有空格(标记*号三项必须的)
    (*) 麦克风权限:Privacy - Microphone Usage Description 是否允许此App使用你的麦克风?
    (*)相机权限: Privacy - Camera Usage Description 是否允许此App使用你的相机?
    (*)相册权限: Privacy - Photo Library Usage Description 是否允许此App访问你的媒体资料库?
    通讯录权限: Privacy - Contacts Usage Description 是否允许此App访问你的通讯录?
    蓝牙权限:Privacy - Bluetooth Peripheral Usage Description 是否许允此App使用蓝牙?
    日历权限:Privacy - Calendars Usage Description 是否允许此App使用日历?
    定位权限:Privacy - Location When In Use Usage Description访问地理位置
    定位权限: Privacy - Location Always Usage Description 访问地理位置
    定位的需要这么写,防止上架被拒。
    如果你自认为你添加了权限,但是打包上传之后商店中还是没有显示版本构建,那么就是被拒了,因为没有显示版本构建原因就是权限问题,这时你要做:
    (1)查看苹果发给你审核结果的邮件,看具体问题在哪了
    (2)返回plist文件中,删除之前的权限,重新添加一下吧(有可能你哪不小心添加的权限末尾有空格,或者字段不对),博主就是这样添加权限还不显示,查了都是说权限问题,只有重新删除添加一遍就出来了,这时你会发现–活动(显示你构建的所有版本)中有你新构建的版本了(博主权限添加有问题时这里都没显示新构建的版本),如下
    这里写图片描述
    那么这时构建版本也会有+号,添加以下
    这里写图片描述
在plist文件里添加这几个字段(可以根据自己APP的情况,来添加),重点是:要在后面添加描述,如果不添加描述,跟没加是一样的,苹果还是会拒绝(最基础是带*的前三项添加)





版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/hbblzjy/article/details/53301038

智能推荐

Hadoop3+zookeeper3 HA高可用集群搭建_醉殇无痕的博客-程序员秘密

Hadoop3 HA高可用集群搭建环境准备jdkjdk-8u192-linux-x64.tar.gzhadoophadoop-3.1.2.tar.gzzookeeperzookeeper-3.4.13.tar.gzjava环境配置# vi + /etc/profile在末尾添加以下内容:# JAVA_HOMEexport JAVA_HOME=/op...

好书推荐_weixin_30416497的博客-程序员秘密

Windows Media编程导向Windows多线程技术与实例恶意传播代码:Windows病毒防护Handening Windows Systems中文版转载于:https://www.cnblogs.com/wubiyu/archive/2008/10/27/1320125.html...

Java8新特性之Stream流与集合_66Kevin的博客-程序员秘密

流与集合我们先来打个直观的比方吧。比如说存在DVD里的电影,这就是一个集合(也许是字节,也 许是帧,这个无所谓),因为它包含了整个数据结构。现在再来想想在互联网上通过视频流看同 样的电影。现在这是一个流(字节流或帧流)。流媒体视频播放器只要提前下载用户观看位置的 那几帧就可以了,这样不用等到流中大部分值计算出来,你就可以显示流的开始部分了(想想观 看直播足球赛)。特别要注意,视频播放器可能没有将...

live555 windows下编译以及修订_qianbo_insist的博客-程序员秘密

live555 的好处live555 rtsp写得非常好用,client尤其好

webservice篇之web项目整合(五)_普通web项目整合 webservice_rainjm的博客-程序员秘密

这里我们讲解web项目开发webservice接口,与spring,tomcat,cxf的整合连用第一步:创建web项目第二步:导入spring与cxf的jar包第三部:创建接口与实现类接口类:package com.azj.service;import javax.jws.WebService;@WebServicepublic interface ode

CNN+Depth estimation_depth estimation no pooling_lemianli的博客-程序员秘密

1 - AlexNet 和 VGG-NetCVPR 2015 基本是 “the year of deep learning”,有大概70%的文章是关于deep learning的。大会请来了2位 keynote speakers: 计算机学家 Yann LuCun (NYU, Facebook) 和 心理学家、神经学家 Jack Gallan (Berkeley)。 Yann是公认的 Co

随便推点

MongoDB 数据操作(八)聚合框架(8)$out_mongo out_Oscaner的博客-程序员秘密

来源:我的博客站 OceanicKang |《MongoDB 数据操作(八)聚合框架(8)$out》

不写一行代码 从 0 搭建网站 超详细的教程总篇 (目录)_爱看美剧真是太好了的博客-程序员秘密

搭建Wordpress网站如果我们想从0搭建一个WP网站,我们会碰到哪些问题。域名、主机服务器、搭建、配证书做HTTPS、选用主题、插件、备份等等。这些我在「我当站长那些年」分类中基本都写了,而且不仅仅这点,但是顺序比较乱,而且没有做一个统一的总结。到现在博客经历完这些步骤,基本告一段落,以后主要关注内容、见招拆招就行。如果你在这之前对于搭建网站一点也不了解,这篇算是不错的总结。主机服务...

​Python实战案例:航班票价预测这样做,效果真好啊_python预测案例_Python数据挖掘的博客-程序员秘密

了解EDA的完整流程学会在数据集中从数学和可视化等上面获得一些见解。可视化数据方便挖掘更加直观的结论。将在特征工程部分挖掘我们可以做的工作。机器学习模型:学习做一个经过数据预处理等步骤的机器学习模型。比较模型:将研究多个模型,并选择最佳模型。通过比较所有的模型(岭回归、套索回归、决策树回归),我们可以得出决策树回归性能最好。...

测试环境部署之填坑记录-Expected one result (or null) to be returned by selectOne(), but found: 2..._weixin_30902251的博客-程序员秘密

最近在部署性能测试环境的时候,环境 部署好以后,部分功能出现接口查询异常,问题现象:拿到错误,肯定要先判断是前端还是后端代码的问题,最简单的方式是抓包查看:以上是报错页面捕获的接口报错,很明显的接口已经报错了,那么就直接查看后端的日志:查看日志分两步:1.查看网关web端的日志:从日志可以知道,出错的地方在selectOrgDetail接口查询...

推荐一个HTML文件解析的工具包jsoup-1.7.3.jar_yj_2006hn的博客-程序员秘密

jsoup可以用来解析或修改html文件,可以向js工具jquery一样使用各种强大的选择器,源码下载网址:http://jsoup.org/download、maven引用:    org.jsoup  jsoup  1.7.3Document doc = Jsoup.connect("http://example.com/").get(); //加载并解析网址对应的文

mysqldump基于时间点进行备份恢复操作_mysqldump按时间点恢复_Wash2017的博客-程序员秘密

1.事前准备linux环境(我是宝塔集成环境) mysql的root账号一枚 开启mysqlbin-log日志 找到mysqlbinlog命令完整路径(系统默认mysqlbinlog命令最好不要使用) 找到mysql二进制文件位置,find / -name mysql-bin* 数据库附件一份,https://download.csdn.net/download/wash2017/1...

推荐文章

热门文章

相关标签