今天无聊,下了个炒币资讯的 APP,在上传头像这个步骤的时候,发现居然不需要用户授权,直接能进入相册选择照片,没有任何的提示信息直接就进入到了相册!!!后面百度了下,发现出现这个问题的都是 iOS11 的用户,我用另外一台手机是 iOS9 的测试,该 APP 会弹出授权提示框,必须用户确认后才能进入相册。我比较好奇,难道这是一个 iOS11 的 BUG 吗?
1
dewi OP 补充下,在 iOS11 系统下,在设置-隐私-相册中也找不到该 APP。超级好奇这个程序员是这么做到的!
|
2
dibage 2018-05-24 12:01:16 +08:00
我上次也发现了,感觉应该是先预览,如果选择图片的话,回进行权限请求提示,拒绝的话则无法获取图片数据
应该是这样的 |
3
kera0a 2018-05-24 12:04:16 +08:00
iOS11 默认开启相册读权限,无需用户授权
|
4
honeycomb 2018-05-24 12:06:32 +08:00 via Android
@dewi 这是 intended behavior,因为应用自始至终都没有访问到相册。
实际上发生了这样的事: 应用让系统的相册返回一张照片,这张照片是你刻意挑的。这个过程中只有系统的相册访问到了相册。 Android 中也有类似的特性。 |
5
xuhaoyangx 2018-05-24 12:08:13 +08:00
@honeycomb #4 Android 有吗?有文章观摩吗?
|
6
kera0a 2018-05-24 12:09:50 +08:00
|
7
SourceMan 2018-05-24 12:11:19 +08:00 via iPhone
类似于 web 上面的 input file 吗?应用只能得到你最后选择的那个
|
8
afpro 2018-05-24 12:40:01 +08:00
android: Intent.ACTION_GET_CONTENT
|
9
wpo 2018-05-24 15:06:46 +08:00
iOS 11 默认就有“读”权限,“写”需要授权。
|
12
dewi OP @honeycomb 但是我选择照片上传了以后,在设置隐私里也没看到这个 APP。你的意思是说,其实这一次的获取请求是调用了系统相册进行获取的,而不是 APP 直接获取,所以不会在隐私中显示,是这个意思吗?
|
14
w99wen 2018-05-24 19:41:06 +08:00
如果使用苹果提供的一个特定的选择图片的类,这个类只能选择一张图片,而且选择过程 app 不知道到底有多少张图片,只能知道用户最终选择了一张照片,这种不需要权限的。
如果是够获取所有图片的路径,这个是要权限。 |
15
yushiro 2018-05-24 19:55:56 +08:00 via iPhone
在 ios 的浏览器里面上传一张图片,也不用授权给浏览器,一个原理,只能访问你选择的那张图片,其他图片对 app 是不开放的
|
16
honeycomb 2018-05-24 22:23:25 +08:00 via Android
@dewi 是的,就是这么回事。
app 委托由系统图库请求你 pick 一张照片(或者是联系人等需要权限的东西)给它,如此: app 本身不需要访问整个资源的权限 实际操作者是有权限的系统图库 从结果上依然是用户明示地授权,而且总是一次性的,可以避免滥用 |
17
mcluyu 2018-05-25 09:18:28 +08:00
试了一下,就和选择单个通讯录联系人一样, 使用 imagePicker 选取一张图片是不需要权限的,iOS11
|