昨天上架到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(预期应用行为),对于用户的隐私更加重视,如果需要访问用户手机的相机、多媒体、蓝牙、通讯录、位置、健康、运动...等等,必须询问用户征得用户授权才可以使用。

官方说明链接:

https://developer.apple.com/library/content/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/ExpectedAppBehaviors/ExpectedAppBehaviors.html

在项目工程配置文件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的更多相关文章

  1. The App Life Cycle & The Main Function

    The App Life Cycle Apps are a sophisticated interplay between your custom code and the system framew ...

  2. 苹果iOS11重磅改版App Store,开发者应该了解这些

    苹果在WWDC2017上重磅发布iOS11,其中一项重大更新就是对App Sore的全新改版,我们一起来看看具体有哪些变化,以及对我们会带来哪些影响. App Store的分类变化 在iOS10以前, ...

  3. 【8.0.0_r4】AMS分析(十七)(ActivityManagerService.java下)

    代码位于frameworks/base/services/core/java/com/android/server/am/,一共有七十个文件. Java源码位于package com.android. ...

  4. iOS 10 推送的简单使用

    首先介绍一下本文涉及到UserNotifications的几个主要类. 其中 [1]UNNotification主要是作为通知delegate方法的参数使用.包含UNNotificationReque ...

  5. iOS 10 UserNotifications 使用说明

    本教程以贴代码为主.尽可能直观,少量说明. 注意:XCode8的需要手动开启主target Capabilities中的Push Notification. 关于创建多个target后真机测试的证书问 ...

  6. Junit初级编码(二)探索JUnit核心

    序,Junit测试是单元测试的一个框架,提供了很多方法,供我们快速开展单元测试.现在就让我们慢慢学习Junit单元测试框架 一.Junit的三个核心概念测试类.测试集.测试运行器 1 测试类 公共的, ...

  7. 【转】iOS 10 UserNotifications 使用说明

    注意:XCode8的需要手动开启主target Capabilities中的Push Notification. 关于创建多个target后真机测试的证书问题,除了主target手动创建开发和发布证书 ...

  8. Yii2 behavior运用

    class ReturnDataTypeBehaviors extends Behavior { public $type = 'json'; public $pcOrMobile = 'pc'; / ...

  9. iosAPP打包上架xcode中Archive提交成功以后,不提示构建版本问题

    最近在项目更新时遇到Archive提交到开发者中心成功后,一直不提示构建版本信息,可能导致的原因是由于ios10以后对于APP中调用手机相册或摄像头麦克风时需要配置plist文件,配置如下内容或许会解 ...

随机推荐

  1. Cmder--Windows下命令行利器

    cmder cmder是一个增强型命令行工具,不仅可以使用windows下的所有命令,更爽的是可以使用linux的命令,shell命令. 安装包 安装包链接 下载后,直接解压即用. 修改命令提示符λ为 ...

  2. C++中的事件分发

    本文意在展现一个C++实现的通用事件分发系统,能够灵活的处理各种事件.对于事件处理函数的注册,希望既能注册到普通函数,注册到事件处理类,也能注册到任意类的成员函数.这样在游戏客户端的逻辑处理中,可以非 ...

  3. JavaScript 自定义对象

    在Js中,除了Array.Date.Number等内置对象外,开发者可以通过Js代码创建自己的对象. 目录 1. 对象特性:描述对象的特性 2. 创建对象方式:对象直接量.new 构造函数.Objec ...

  4. MySQL碎碎念

    1. 如何修改Mysql的用户密码 mysql> update mysql.user set password=password('hello') where user='root'; mysq ...

  5. PHP static静态属性和静态方法

    这里分析了php面向对象中static静态属性和静态方法的调用.关于它们的调用(能不能调用,怎么样调用),需要弄明白了他们在内存中存放位置,这样就非常容易理解了.静态属性.方法(包括静态与非静态)在内 ...

  6. springmvc+mybatis+spring 整合 bootstrap html5

    A 调用摄像头拍照,自定义裁剪编辑头像 [新录针对本系统的视频教程,手把手教开发一个模块,快速掌握本系统]B 集成代码生成器 [正反双向](单表.主表.明细表.树形表,开发利器)+快速构建表单;  技 ...

  7. 设计模式之单例模式(Singleton)

    设计模式之单例模式(Singleton) 设计模式是前辈的一些经验总结之后的精髓,学习设计模式可以针对不同的问题给出更加优雅的解答 单例模式可分为俩种:懒汉模式和饿汉模式.俩种模式分别有不同的优势和缺 ...

  8. Oracle-BPM安装详解

    H3 BPM安装包括两个部分,基础工作包括安装IIS..net Freamwork基础框架.安装完成之后,主要配置安装包括数据库,H3 BPM 程序.下面详细介绍Oracle与H3 BPM对接安装的整 ...

  9. MongoDB学习笔记~对集合属性的操作

    回到目录 $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$ ...

  10. SQLite学习笔记(十)&&加密

    随着移动互联网的发展,手机使用越来越广泛,sqlite作为手机端存储的一种解决方案,使用也非常普遍.但是sqlite本身安全特性却比较弱,比如不支持用户权限,只要能获取到数据库文件就能进行访问:另外也 ...