无法统一将文件保存到 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 端工作。
我想将图像文件保存到组容器中,以便与 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 端工作。