iOS10之Expected App Behaviors
昨天上架到appStore的时候碰到个问题,构建好后上传到itunesconnect的的包都用不了,
显示错误为:此构建版本无效。
或者英文显示为:ITC.apps.preReleaseBuild.errors.invalidBinary

由于和itunesconnect帐号绑定的邮箱暂时进不去,没看到apple发到我们邮箱的通知信息,所以只在度娘搜索:有的说
是网络问题,有说是电脑问题,有说是icon问题,有说使用Application Loader上传.....
但是试了都没解决问题,然后就出现了这么多个『此构建版本无效』
后面终于登录了邮箱,看打了apple那边的团队发过来的通知邮件,原来是这个原因:
......
This app attempts to access privacy-sensitive data without a usage description. The app's Info.plist must contain an NSBluetoothPeripheralUsageDescription key with a string value explaining to the user how the app uses this data.
Once these issues have been corrected, you can then redeliver the corrected binary.
Regards,
The App Store team
意思是app的配置文件info.plist少了一个app请求使用设备蓝牙的请求配置:NSBluetoothPeripheralUsageDescription
然后加上后,再次打包上传就可以使用了!
查了下资料,apple从iOS10之后,Expected App Behaviors(预期应用行为),对于用户的隐私更加重视,如果需要访问用户手机的相机、多媒体、蓝牙、通讯录、位置、健康、运动...等等,必须询问用户征得用户授权才可以使用。
官方说明链接:

在项目工程配置文件info.plist添加时会自动提示的,截图如下:
查看info.plist的source code,展开如下:

<key>NSBluetoothPeripheralUsageDescription</key>
<string>是否允许此App访问您的蓝牙</string>
<key>NSCalendarsUsageDescription</key>
<string>是否允许此App访问您的日历</string>
<key>NSCameraUsageDescription</key>
<string>是否允许此App使用您的相机</string>
<key>NSContactsUsageDescription</key>
<string>是否允许此App访问您的通讯录</string>
<key>NSHealthShareUsageDescription</key>
<string>是否允许此App访问您的健康分享</string>
<key>NSHealthUpdateUsageDescription</key>
<string>是否允许此App访问您的健康更新</string>
<key>NSHomeKitUsageDescription</key>
<string>是否允许此App访问您的HomeKit</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>我们需要通过您的地理位置信息获取您周边的相关数据</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>您的位置信息将用于地图上显示您的位置,并发送给联系人</string>
<key>NSMicrophoneUsageDescription</key>
<string>是否允许此App使用您的麦克风</string>
<key>NSMotionUsageDescription</key>
<string>App需要您的同意,才能访问运动与健身</string>
<key>kTCCServiceMediaLibrary</key>
<string>是否允许此App访问您的音乐</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>是否允许此App访问您的媒体资料库</string>
<key>NSRemindersUsageDescription</key>
<string>是否允许此App访问您的提醒事项</string>
<key>NSSiriUsageDescription</key>
<string>是否允许此App访问您的Siri</string>
<key>NSSpeechRecognitionUsageDescription</key>
<string>是否允许此App使用您的语音识别</string>
<key>NSVideoSubscriberAccountUsageDescription</key>
<string>是否允许此App访问您的tv供应商账户</string>
原文链接:http://www.cnblogs.com/tandaxia/p/6207236.html
iOS10之Expected App Behaviors的更多相关文章
- The App Life Cycle & The Main Function
The App Life Cycle Apps are a sophisticated interplay between your custom code and the system framew ...
- 苹果iOS11重磅改版App Store,开发者应该了解这些
苹果在WWDC2017上重磅发布iOS11,其中一项重大更新就是对App Sore的全新改版,我们一起来看看具体有哪些变化,以及对我们会带来哪些影响. App Store的分类变化 在iOS10以前, ...
- 【8.0.0_r4】AMS分析(十七)(ActivityManagerService.java下)
代码位于frameworks/base/services/core/java/com/android/server/am/,一共有七十个文件. Java源码位于package com.android. ...
- iOS 10 推送的简单使用
首先介绍一下本文涉及到UserNotifications的几个主要类. 其中 [1]UNNotification主要是作为通知delegate方法的参数使用.包含UNNotificationReque ...
- iOS 10 UserNotifications 使用说明
本教程以贴代码为主.尽可能直观,少量说明. 注意:XCode8的需要手动开启主target Capabilities中的Push Notification. 关于创建多个target后真机测试的证书问 ...
- Junit初级编码(二)探索JUnit核心
序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试.现在就让我们慢慢学习Junit单元测试框架 一.Junit的三个核心概念测试类.测试集.测试运行器 1 测试类 公共的, ...
- 【转】iOS 10 UserNotifications 使用说明
注意:XCode8的需要手动开启主target Capabilities中的Push Notification. 关于创建多个target后真机测试的证书问题,除了主target手动创建开发和发布证书 ...
- Yii2 behavior运用
class ReturnDataTypeBehaviors extends Behavior { public $type = 'json'; public $pcOrMobile = 'pc'; / ...
- iosAPP打包上架xcode中Archive提交成功以后,不提示构建版本问题
最近在项目更新时遇到Archive提交到开发者中心成功后,一直不提示构建版本信息,可能导致的原因是由于ios10以后对于APP中调用手机相册或摄像头麦克风时需要配置plist文件,配置如下内容或许会解 ...
随机推荐
- PHP-生成缩略图和添加水印图-学习笔记
1.开始 在网站上传图片过程,经常用到缩略图功能.这里我自己写了一个图片处理的Image类,能生成缩略图,并且可以添加水印图. 2.如何生成缩略图 生成缩略图,关键的是如何计算缩放比率. 这里,我根据 ...
- MIP改造常见问题二十问
在MIP推出后,我们收到了很多站长的疑问和顾虑.我们将所有疑问和顾虑归纳为以下二十个问题,希望对大家理解 MIP 有帮助. 1.MIP 化后对其他搜索引擎抓取收录以及 SEO 的影响如何? 答:在原页 ...
- 水印第三版 ~ 变态水印(这次用Magick.NET来实现,附需求分析和源码)
技能 汇总:http://www.cnblogs.com/dunitian/p/4822808.html#skill 以前的水印,只是简单走起,用的是原生态的方法.现在各种变态水印,于是就不再用原生态 ...
- VB.NET设置控件和窗体的显示级别
前言:在用VB.NET开发射频检测系统ADS时,当激活已存在的目标MDI子窗体时,被其他子窗体遮住了,导致目标MDI子窗体不能显示. 这个问题怎么解决呢?网上看到一篇帖子VB.NET设置控件和窗体的显 ...
- 通过自定义特性,使用EF6拦截器完成创建人、创建时间、更新人、更新时间的统一赋值(使用数据库服务器时间赋值,接上一篇)
目录: 前言 设计(完成扩展) 实现效果 扩展设计方案 扩展后代码结构 集思广益(问题) 前言: 在上一篇文章我写了如何重建IDbCommandTreeInterceptor来实现创建人.创建时间.更 ...
- bzoj3208--记忆化搜索
题目大意: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目. 我们可以把风景区看作一个n*n的地图,每个点有它的初始高度,滑雪只能从高处往低处滑[严格大于] ...
- css_02之盒模型、渐变
1.框模型:盒模型,①对象实际宽度=左右外边距+左右边框+左右内边距 + width:②对象实际高度=上下外边距+上下边框+上下内边距 + height: 2.外边距:margin:取值:①top(上 ...
- SpringMVC_简单小结
SpringMVC是一个简单的.优秀的框架.应了那句话简单就是美,而且他强大不失灵活,性能也很优秀. 机制:spring mvc的入口是servlet,而struts2是filter(这里要指出,fi ...
- JS or C#?不存在的脚本之争
前言: 又来到了周末,小匹夫也终于有了喘口气写写博客的时间和精力.话说周五的下午,小匹夫偶然间晃了一眼蛮牛的QQ群,又看到了一个Unity3D开发中老生长谈的问题,“我的开发语言究竟是选择JavaSc ...
- 纯JS打造比QQ空间更强大的图片浏览器-支持拖拽、缩放、过滤、缩略图等
在线演示地址(打开网页后,点击商家图册): http://www.sport7.cn/cc/jiangnan/football5.html 先看一看效果图: 该图片浏览器实现的功能如下: 1. 鼠标滚 ...