无法统一将文件保存到 AppGroup 的共享容器 ios

can't save file to shared container of AppGroup with unity ios

我想将图像文件保存到组容器中,以便与 iMessage 扩展一起使用,作为由 Unity 生成的贴纸,所以我写了一个 ios 插件来获取容器路径并将数据保存到相应的路径,我已经成功得到了

的路径
/private/var/mobile/Containers/Shared/AppGroup/1C848C27-6215-4C6F-98A9-E42E7794826D

但由于以下异常无法保存:

    IsolatedStorageException: Could not find a part of the path "/private/var/mobile/Containers/Shared/AppGroup/1C848C27-6215-4C6F-98A9-E42E7794826D/Documents/0.jpg".
  at System.IO.FileStream..ctor (System.String path, FileMode mode, FileAccess access, FileShare share, Int32 bufferSize, Boolean anonymous, FileOptions options) [0x00000] in <filename unknown>:0 
  at System.IO.File.Create (System.String path, Int32 bufferSize) [0x00000] in <filename unknown>:0 
  at TestSharedContainer.saveImageToFolder () [0x00000] in <filename unknown>:0 
  at TestSharedContainer.OnGUI () [0x00000] in <filename unknown>:0 

我在 c#

中使用以下代码保存文件
string fs_share_path = containerPath + "/0.jpg";
Debug.Log("writing :" + fs_share_path);
FileStream fs_share = File.Create(fs_share_path);
fs_share.Write(text.EncodeToJPG(), 0, text.EncodeToJPG().Length);
fs.Close(); 

如何进行这项工作?

我从未见过有人通过获取路径并尝试从 C# 向其写入来实现此功能。另外,我试过这个但也失败了。我想你不能从 C# 中做到这一点。

我发现唯一可行的方法是将写入功能移至插件。使用 Object-C 编写一个写入该目录的函数。这个 Object-C 函数应该有两个参数:数据 (byte[]) 和文件名 (string)。然后,您可以从 C# 调用此函数,并将要保存的数据和文件名传递给 Object-C 插件。

我注意到 Unity 的 Application.persistentDataPath return 在 iOS 上以 /var/mobile/Containers/Data/Application/ 开头的路径。

我试过中继 AppGroups 的容器路径,使其从 /var/mobile/Containers/Shared/AppGroup/ 开始,它使文件 writing/reading 从 C#/Unity 端工作。