imfuxiao / Hamster

librime for iOS App
GNU General Public License v3.0
1.23k stars 79 forks source link

如何指定 sync_dir 为 resilio sync 目录? #671

Closed luochen1990 closed 1 month ago

luochen1990 commented 2 months ago

其他相关 issue 里有人提到了 iCloud 的例子为:

sync_dir: "/private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents/sync"

但不知道对于其他同步文件的app,应该怎么配置,这里是不是需要提供一个选择 sync_dir 目录的 GUI交互(否则iOS不会授权)?

imfuxiao commented 1 month ago

对于 iOS 来说,每个 App 只能对「自身的 iCloud 上的目录」有读写权限,这个目录是申请权限时,系统分配的。

所以「仓」只能固定读写 /private/var/mobile/Library/Mobile Documents/iCloud~dev~fuxiao~app~hamsterapp/Documents 下的 iCloud 目录。

其他 App 的 iCloud 目录,仓是无法读取和写入的。

所以你的问题:其他同步文件的app,应该怎么配置?在 iOS 上是做不到的,只有在 MacOS 或者 Windows 上,才能对这些目录有读写权限。


以上是仅是个人的理解,如有不对的地方,请指正。

luochen1990 commented 1 month ago

iOS 好像有个访问共享目录的机制,就是调用某个API弹出系统文件选择器,然后用户可以选被其他APP共享的目录,这时候当前APP就能获得访问权限。 但我不确定这个授权会不会保留到下一次启动

imfuxiao commented 1 month ago

您是指 AppGroup 机制么?这个是为同公司不同产品使用的。而系统文件选择器只有每次调用才可以拿到文件,是不能持久访问目标地址的。

luochen1990 commented 1 month ago

是指 AppGroup 机制么

不是 AppGroup 机制,我忘了叫啥名字了。 就是像 Documents 进入 “+” 号 -> “文件” -> “我的iPhone” -> “< 浏览” -> "位置" 这里面就是跨 APP 访问的目录

imfuxiao commented 1 month ago

是这个么:https://developer.apple.com/documentation/uikit/view_controllers/providing_access_to_directories

luochen1990 commented 1 month ago

You can then read the bookmark, and resolve it to a security-scoped URL again.

看起来是的, 文档里还提到 可以再次访问目录,但是要通过 bookmark。 但是我不知道这个 bookmark 是个什么概念,不知道用这套东西是否能整出一个可行的方案来

imfuxiao commented 1 month ago

刚做了测试,目前来说测试是成功的,不知道是否会遇到意外的情况。

您方便进入仓的测试组吗,方便的话,可以给我发邮件(我的邮件在仓的「关于」里面),邮件内容带上您的苹果账号,我拉您进 TF 测试组。

imfuxiao commented 1 month ago

商店已发布 2.7.1 版,已增加同步地址选择功能,支持选择 iCloud 位置或本地手机上应用暴露的文档位置。

imfuxiao commented 1 month ago

您好,如果没有什么问题,此 issue 可以关闭了。

luochen1990 commented 1 month ago

好滴 :)