Akses sistem file di Xamarin.iOS

Download Sample Mengunduh sampel

Anda dapat menggunakan Xamarin.iOS dan System.IO kelas di .NET Base Class Library (BCL) untuk mengakses sistem file iOS. Kelas ini File memungkinkan Anda membuat, menghapus, dan membaca file, dan Directory kelas memungkinkan Anda membuat, menghapus, atau menghitung konten direktori. Anda juga dapat menggunakan Stream subkelas, yang dapat memberikan tingkat kontrol yang lebih besar atas operasi file (seperti kompresi atau pencarian posisi dalam file).

iOS memberlakukan beberapa batasan pada apa yang dapat dilakukan aplikasi dengan sistem file untuk mempertahankan keamanan data aplikasi, dan untuk melindungi pengguna dari aplikasi ganas. Pembatasan ini adalah bagian dari Kotak Pasir Aplikasi – seperangkat aturan yang membatasi akses aplikasi ke file, preferensi, sumber daya jaringan, perangkat keras, dll. Aplikasi terbatas pada membaca dan menulis file dalam direktori berandanya (lokasi terinstal); tidak dapat mengakses file aplikasi lain.

iOS juga memiliki beberapa fitur khusus sistem file: direktori tertentu memerlukan perlakuan khusus sehubungan dengan pencadangan dan peningkatan, dan aplikasi juga dapat berbagi file satu sama lain dan aplikasi File (sejak iOS 11), dan melalui iTunes.

Artikel ini membahas fitur dan pembatasan sistem file iOS, dan menyertakan aplikasi sampel yang menunjukkan cara menggunakan Xamarin.iOS untuk menjalankan beberapa operasi sistem file sederhana:

A sample of iOS executing some simple file system operations

Akses file umum

Xamarin.iOS memungkinkan Anda menggunakan kelas .NET System.IO untuk operasi sistem file di iOS.

Cuplikan kode berikut mengilustrasikan beberapa operasi file umum. Anda akan menemukan semuanya di bawah ini dalam file SampleCode.cs , dalam aplikasi sampel untuk artikel ini.

Bekerja dengan direktori

Kode ini menghitung subdirektori dalam direktori saat ini (ditentukan oleh parameter "./"), yang merupakan lokasi aplikasi Anda yang dapat dieksekusi. Output Anda akan menjadi daftar semua file dan folder yang disebarkan dengan aplikasi Anda (ditampilkan di jendela konsol saat Anda menelusuri kesalahan).

var directories = Directory.EnumerateDirectories("./");
foreach (var directory in directories) {
      Console.WriteLine(directory);
}

Membaca file

Untuk membaca file teks, Anda hanya memerlukan satu baris kode. Contoh ini akan menampilkan konten file teks di jendela Output Aplikasi.

var text = File.ReadAllText("TestData/ReadMe.txt");
Console.WriteLine(text);

Serialisasi XML

Meskipun bekerja dengan namespace lengkap System.Xml berada di luar cakupan artikel ini, Anda dapat dengan mudah mendeserialisasi dokumen XML dari sistem file dengan menggunakan StreamReader seperti cuplikan kode ini:

using (TextReader reader = new StreamReader("./TestData/test.xml")) {
      XmlSerializer serializer = new XmlSerializer(typeof(MyObject));
      var xml = (MyObject)serializer.Deserialize(reader);
}

Untuk informasi selengkapnya, lihat dokumentasi untuk System.Xml dan serialisasi. Lihat dokumentasi Xamarin.iOS pada linker - seringkali Anda perlu menambahkan [Preserve] atribut ke kelas yang ingin Anda serialisasi.

Membuat file dan direktori

Sampel ini menunjukkan cara menggunakan Environment kelas untuk mengakses folder Dokumen tempat kita dapat membuat file dan direktori.

var documents =
 Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments); 
var filename = Path.Combine (documents, "Write.txt");
File.WriteAllText(filename, "Write this text into a file");

Membuat direktori adalah proses serupa:

var documents =
 Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var directoryname = Path.Combine (documents, "NewDirectory");
Directory.CreateDirectory(directoryname);

Untuk informasi selengkapnya, lihat referensi API System.IO.

Serialisasi JSON

Json.NET adalah kerangka kerja JSON berkinerja tinggi yang berfungsi dengan Xamarin.iOS dan tersedia di NuGet. Tambahkan paket NuGet ke proyek aplikasi Anda, menggunakan Tambahkan NuGet di Visual Studio untuk Mac:

Adding the NuGet package to the applications project

Selanjutnya, tambahkan kelas untuk bertindak sebagai model data untuk serialisasi/deserialisasi (dalam hal Account.csini ):

using System;
using System.Collections.Generic;
using Foundation; // for Preserve attribute, which helps serialization with Linking enabled

namespace FileSystem
{
    [Preserve]
    public class Account
    {
        public string Email { get; set; }
        public bool Active { get; set; }
        public DateTime CreatedDate { get; set; }
        public List<string> Roles { get; set; }

        public Account() {
        }
    }
}

Terakhir, buat instans Account kelas, serialisasikan ke data json dan tulis ke file:

// Create a new record
var account = new Account(){
    Email = "monkey@xamarin.com",
    Active = true,
    CreatedDate = new DateTime(2015, 5, 27, 0, 0, 0, DateTimeKind.Utc),
    Roles = new List<string> {"User", "Admin"}
};

// Serialize object
var json = JsonConvert.SerializeObject(account, Newtonsoft.Json.Formatting.Indented);

// Save to file
var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine (documents, "account.json");
File.WriteAllText(filename, json);

Untuk informasi selengkapnya tentang bekerja dengan data json dalam aplikasi .NET, lihat dokumentasi Json.NET.

Pertimbangan khusus

Terlepas dari kesamaan antara operasi file Xamarin.iOS dan .NET, iOS dan Xamarin.iOS berbeda dari .NET dengan beberapa cara penting.

Membuat file proyek dapat diakses saat runtime

Secara default, jika Anda menambahkan file ke proyek Anda, file tersebut tidak akan disertakan dalam perakitan akhir, dan karenanya tidak akan tersedia untuk aplikasi Anda. Untuk menyertakan file dalam rakitan, Anda harus menandainya dengan tindakan build khusus, yang disebut Konten.

Untuk menandai file untuk dimasukkan, klik kanan pada file dan pilih Bangun Konten Tindakan > di Visual Studio untuk Mac. Anda juga dapat mengubah Tindakan Build di lembar Properti file.

Sensitivitas huruf besar/besar

Penting untuk dipahami bahwa sistem file iOS peka huruf besar/kecil. Sensitivitas huruf besar/kecil berarti bahwa nama file dan direktori Anda harus sama persis - README.txt dan readme.txt akan dianggap sebagai nama file yang berbeda.

Ini bisa membingungkan bagi pengembang .NET yang lebih terbiasa dengan sistem file Windows, yang tidak peka huruf besar/kecil - File, FILE, dan file semuanya akan merujuk ke direktori yang sama.

Peringatan

Simulator iOS TIDAK peka huruf besar/kecil. Jika casing nama file Anda berbeda antara file itu sendiri dan referensi ke dalam kode, kode Anda mungkin masih berfungsi di simulator tetapi akan gagal pada perangkat nyata. Ini adalah salah satu alasan mengapa penting untuk menyebarkan dan menguji pada perangkat yang sebenarnya lebih awal dan sering selama pengembangan iOS.

Pemisah jalur

iOS menggunakan garis miring '/'sebagai pemisah jalur (yang berbeda dari Windows, yang menggunakan garis miring terbalik '\').

Karena perbedaan yang membingungkan ini, adalah praktik yang baik untuk menggunakan System.IO.Path.Combine metode , yang menyesuaikan untuk platform saat ini, daripada hardcode pemisah jalur tertentu. Ini adalah langkah sederhana yang membuat kode Anda lebih portabel ke platform lain.

Kotak pasir aplikasi

Akses aplikasi Anda ke sistem file (dan sumber daya lain seperti fitur jaringan dan perangkat keras) terbatas karena alasan keamanan. Pembatasan ini dikenal sebagai Kotak Pasir Aplikasi. Dalam hal sistem file, aplikasi Anda terbatas pada pembuatan dan penghapusan file dan direktori di direktori berandanya.

Direktori beranda adalah lokasi unik dalam sistem file tempat aplikasi Anda dan semua datanya disimpan. Anda tidak dapat memilih (atau mengubah) lokasi direktori beranda untuk aplikasi Anda; namun iOS dan Xamarin.iOS menyediakan properti dan metode untuk mengelola file dan direktori di dalamnya.

Bundel aplikasi

Application Bundle adalah folder yang berisi aplikasi Anda. Ini dibedakan dari folder lain dengan menambahkan akhiran .app ke nama direktori. Bundel aplikasi Anda berisi file yang dapat dieksekusi dan semua konten (file, gambar, dll.) yang diperlukan untuk proyek Anda.

Saat Anda menelusuri bundel aplikasi anda di Mac OS, itu muncul dengan ikon yang berbeda dari yang Anda lihat di direktori lain (dan akhiran .app disembunyikan); namun, itu hanya direktori biasa yang ditampilkan sistem operasi secara berbeda.

Untuk melihat bundel aplikasi untuk kode sampel, klik kanan proyek di Visual Studio untuk Mac dan pilih Ungkap di Finder. Kemudian navigasikan ke direktori bin/ tempat Anda harus menemukan ikon aplikasi (mirip dengan cuplikan layar di bawah).

Navigate through the bin directory to find an application icon similar to this screenshot

Klik kanan ikon ini dan pilih Tampilkan Isi Paket untuk menelusuri isi direktori Bundel Aplikasi. Konten muncul seperti konten direktori biasa, seperti yang ditunjukkan di sini:

The contents of the app bundle

Bundel aplikasi adalah apa yang diinstal pada simulator atau di perangkat Anda selama pengujian, dan pada akhirnya itu adalah apa yang dikirimkan ke Apple untuk dimasukkan di App Store.

Direktori aplikasi

Saat aplikasi Anda diinstal pada perangkat, sistem operasi membuat direktori beranda untuk aplikasi Anda, dan membuat sejumlah direktori dalam direktori akar aplikasi yang tersedia untuk digunakan. Karena iOS 8, direktori yang dapat diakses pengguna TIDAK terletak di dalam akar aplikasi, sehingga Anda tidak dapat memperoleh jalur untuk bundel aplikasi dari direktori pengguna, atau sebaliknya.

Direktori ini, cara menentukan jalurnya, dan tujuannya tercantum di bawah ini:

 

Direktori Deskripsi
[ApplicationName].app/ Di iOS 7 dan yang lebih lama, ini adalah ApplicationBundle direktori tempat aplikasi Anda dapat dieksekusi disimpan. Struktur direktori yang Anda buat di aplikasi ada di direktori ini (misalnya, gambar dan jenis file lain yang telah Anda tandai sebagai Sumber Daya di proyek Visual Studio untuk Mac).

Jika Anda perlu mengakses file konten di dalam Application Bundle Anda, jalur ke direktori ini tersedia melalui NSBundle.MainBundle.BundlePath properti .
Dokumen/ Gunakan direktori ini untuk menyimpan dokumen pengguna dan file data aplikasi.

Konten direktori ini dapat disediakan untuk pengguna melalui berbagi file iTunes (meskipun ini dinonaktifkan secara default). UIFileSharingEnabled Tambahkan kunci Boolean ke file Info.plist untuk memungkinkan pengguna mengakses file-file ini.

Bahkan jika aplikasi tidak segera mengaktifkan berbagi file, Anda harus menghindari penempatan file yang harus disembunyikan dari pengguna Anda di direktori ini (seperti file database, kecuali Jika Anda berniat untuk membagikannya). Selama file sensitif tetap tersembunyi, file-file ini tidak akan diekspos (dan berpotensi dipindahkan, dimodifikasi, atau dihapus oleh iTunes) jika berbagi file diaktifkan dalam versi mendatang.

Anda dapat menggunakan Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments) metode untuk mendapatkan jalur ke direktori Dokumen untuk aplikasi Anda.

Konten direktori ini dicadangkan oleh iTunes.
Perpustakaan/ Direktori Pustaka adalah tempat yang baik untuk menyimpan file yang tidak dibuat langsung oleh pengguna, seperti database atau file lain yang dihasilkan aplikasi. Konten direktori ini tidak pernah diekspos ke pengguna melalui iTunes.

Anda dapat membuat subdirektori Anda sendiri di Pustaka; namun, sudah ada beberapa direktori yang dibuat sistem di sini yang harus Anda waspadai, termasuk Preferensi dan Cache.

Konten direktori ini (kecuali untuk subdirektori Cache) dicadangkan oleh iTunes. Direktori kustom yang Anda buat di Pustaka akan dicadangkan.
Pustaka/Preferensi/ File preferensi khusus aplikasi disimpan dalam direktori ini. Jangan membuat file-file ini secara langsung. Sebagai gantinya NSUserDefaults , gunakan kelas .

Konten direktori ini dicadangkan oleh iTunes.
Pustaka/Cache/ Direktori Cache adalah tempat yang baik untuk menyimpan file data yang dapat membantu aplikasi Anda berjalan, tetapi itu dapat dengan mudah dibuat ulang. Aplikasi harus membuat dan menghapus file-file ini sesuai kebutuhan dan dapat membuat ulang file-file ini jika perlu. iOS 5 juga dapat menghapus file-file ini (dalam situasi penyimpanan rendah), namun tidak akan melakukannya saat aplikasi berjalan.

Konten direktori ini TIDAK dicadangkan oleh iTunes, yang berarti tidak akan ada jika pengguna memulihkan perangkat, dan mungkin tidak ada setelah versi terbaru aplikasi Anda diinstal.

Misalnya, jika aplikasi Anda tidak dapat terhubung ke jaringan, Anda dapat menggunakan direktori Cache untuk menyimpan data atau file untuk memberikan pengalaman offline yang baik. Aplikasi dapat menyimpan dan mengambil data ini dengan cepat sambil menunggu respons jaringan, tetapi tidak perlu dicadangkan dan dapat dengan mudah dipulihkan atau dibuat ulang setelah pemulihan atau pembaruan versi.
Tmp/ Aplikasi dapat menyimpan file sementara yang hanya diperlukan untuk jangka waktu singkat dalam direktori ini. Untuk menghemat ruang, file harus dihapus ketika tidak lagi diperlukan. Sistem operasi juga dapat menghapus file dari direktori ini ketika aplikasi tidak berjalan.

Konten direktori ini TIDAK dicadangkan oleh iTunes.

Misalnya, direktori tmp mungkin digunakan untuk menyimpan file sementara yang diunduh untuk ditampilkan kepada pengguna (seperti avatar Twitter atau lampiran email), tetapi itu dapat dihapus setelah mereka dilihat (dan diunduh lagi jika diperlukan di masa mendatang).

Cuplikan layar ini memperlihatkan struktur direktori di jendela Finder:

This screenshot shows the directory structure in a Finder window

Mengakses direktori lain secara terprogram

Direktori dan contoh file sebelumnya mengakses Documents direktori. Untuk menulis ke direktori lain, Anda harus membuat jalur menggunakan sintaks ".." seperti yang ditunjukkan di sini:

var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var library = Path.Combine (documents, "..", "Library");
var filename = Path.Combine (library, "WriteToLibrary.txt");
File.WriteAllText(filename, "Write this text into a file in Library");

Membuat direktori serupa:

var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var library = Path.Combine (documents, "..", "Library");
var directoryname = Path.Combine (library, "NewLibraryDirectory");
Directory.CreateDirectory(directoryname);

Jalur ke Caches direktori dan tmp dapat dibangun seperti ini:

var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var cache = Path.Combine (documents, "..", "Library", "Caches");
var tmp = Path.Combine (documents, "..", "tmp");

Berbagi dengan aplikasi File

iOS 11 memperkenalkan aplikasi File - browser file untuk iOS yang memungkinkan pengguna untuk melihat dan berinteraksi dengan file mereka di iCloud dan juga disimpan oleh aplikasi apa pun yang mendukungnya. Untuk mengizinkan pengguna mengakses file secara langsung di aplikasi Anda, buat kunci boolean baru di file LSSupportsOpeningDocumentsInPlace Info.plist dan atur ke true, seperti di sini:

Set LSSupportsOpeningDocumentsInPlace in Info.plist

Direktori Dokumen aplikasi sekarang akan tersedia untuk penjelajahan di aplikasi File. Di aplikasi File, navigasikan ke On My i Telepon dan setiap aplikasi dengan file bersama akan terlihat. Cuplikan layar di bawah ini menunjukkan seperti apa aplikasi sampel FileSystem:

iOS 11 Files appBrowse my iPhone filesSample app files

Berbagi file dengan pengguna melalui iTunes

Pengguna dapat mengakses file di direktori Dokumen aplikasi Anda dengan mengedit Info.plist dan membuat Aplikasi yang mendukung entri berbagi iTunes (UIFileSharingEnabled) dalam tampilan Sumber, seperti yang ditunjukkan di sini:

Adding the Application supports iTunes sharing property

File-file ini dapat diakses di iTunes saat perangkat tersambung dan pengguna memilih tab Apps . Misalnya, cuplikan layar berikut menunjukkan file di aplikasi yang dipilih yang dibagikan melalui iTunes:

This screenshot shows the files in selected app shared via iTunes

Pengguna hanya dapat mengakses item tingkat atas di direktori ini melalui iTunes. Mereka tidak dapat melihat konten subdirektori apa pun (meskipun mereka dapat menyalinnya ke komputer mereka atau menghapusnya). Misalnya, dengan file GoodReader, PDF, dan EPUB dapat dibagikan dengan aplikasi sehingga pengguna dapat membacanya di perangkat iOS mereka.

Pengguna yang mengubah konten folder Dokumen mereka dapat menyebabkan masalah jika mereka tidak berhati-hati. Aplikasi Anda harus mempertimbangkan hal ini dan tahan terhadap pembaruan yang merusak folder Dokumen.

Kode sampel untuk artikel ini membuat file dan folder di folder Dokumen (dalam SampleCode.cs) dan mengaktifkan berbagi file dalam file Info.plist . Cuplikan layar ini memperlihatkan bagaimana ini muncul di iTunes:

This screenshot shows how the files appear in iTunes

Lihat artikel Bekerja dengan Gambar untuk informasi tentang cara mengatur ikon untuk aplikasi dan untuk jenis dokumen kustom apa pun yang Anda buat.

UIFileSharingEnabled Jika kunci salah atau tidak ada, maka berbagi file adalah, secara default, dinonaktifkan, dan pengguna tidak akan dapat berinteraksi dengan direktori Dokumen Anda.

Pencadangan dan pemulihan

Saat perangkat dicadangkan oleh iTunes, semua direktori yang dibuat di direktori beranda aplikasi Anda akan disimpan kecuali direktori berikut:

  • [ApplicationName].app – Jangan menulis ke direktori ini, karena ditandatangani dan harus tetap tidak berubah setelah penginstalan. Ini mungkin berisi sumber daya yang Anda akses dari kode Anda, tetapi tidak memerlukan pencadangan karena akan dipulihkan dengan mengunduh ulang aplikasi.
  • Pustaka/Cache – Direktori cache ditujukan untuk file kerja yang tidak perlu dicadangkan.
  • tmp – Direktori ini digunakan untuk file sementara yang dibuat dan dihapus saat tidak lagi diperlukan, atau untuk file yang dihapus iOS saat membutuhkan ruang.

Mencadangkan sejumlah besar data dapat memakan waktu lama. Jika Anda memutuskan perlu mencadangkan dokumen atau data tertentu, aplikasi Anda harus menggunakan folder Dokumen dan Pustaka. Untuk data sementara atau file yang dapat dengan mudah diambil dari jaringan, gunakan Cache atau direktori tmp.

Catatan

iOS akan 'membersihkan' sistem file ketika perangkat hampir kehabisan ruang disk. Proses ini akan menghapus semua file dari Pustaka/Cache dan folder tmp aplikasi yang saat ini tidak berjalan.

Mematuhi pembatasan cadangan iOS 5 iCloud

Catatan

Meskipun kebijakan ini pertama kali diperkenalkan dengan iOS 5 (yang tampaknya sudah lama) panduan ini masih relevan dengan aplikasi saat ini.

Apple memperkenalkan fungsionalitas Pencadangan iCloud dengan iOS 5. Saat Pencadangan iCloud diaktifkan, semua file di direktori beranda aplikasi Anda (tidak termasuk direktori yang biasanya tidak dicadangkan, misalnya, bundel aplikasi, Caches, dan tmp) dicadangkan ke server iCloud. Fitur ini memberi pengguna cadangan lengkap jika perangkat mereka hilang, dicuri, atau rusak.

Karena iCloud hanya menyediakan ruang kosong 5 Gb untuk setiap pengguna dan untuk menghindari penggunaan bandwidth yang tidak perlu, Apple mengharapkan aplikasi hanya mencadangkan data penting yang dihasilkan pengguna. Untuk mematuhi Panduan Penyimpanan Data iOS, Anda harus membatasi jumlah data yang dicadangkan dengan mematuhi item berikut:

  • Hanya simpan data yang dihasilkan pengguna, atau data yang tidak dapat dibuat ulang, di direktori Dokumen (yang dicadangkan).
  • Simpan data lain yang dapat dengan mudah dibuat ulang atau diunduh ulang di atau tmp (yang tidak dicadangkanLibrary/Caches, dan dapat 'dibersihkan').
  • Jika Anda memiliki file yang mungkin sesuai untuk Library/Caches folder atau tmp tetapi Anda tidak ingin 'dibersihkan' , simpan di tempat lain (seperti Library/YourData) dan terapkan atribut 'jangan cadangkan' untuk mencegah file menggunakan bandwidth iCloud Backup dan ruang penyimpanan. Data ini masih menggunakan ruang pada perangkat, jadi Anda harus mengelolanya dengan hati-hati dan menghapusnya jika memungkinkan.

Atribut 'jangan cadangkan' diatur menggunakan NSFileManager kelas . Pastikan kelas Anda dan using Foundation panggil SetSkipBackupAttribute seperti ini:

var documents = Environment.GetFolderPath (Environment.SpecialFolder.MyDocuments);
var filename = Path.Combine (documents, "LocalOnly.txt");
File.WriteAllText(filename, "This file will never get backed-up. It would need to be re-created after a restore or re-install");
NSFileManager.SetSkipBackupAttribute (filename, true); // backup will be skipped for this file

true Kapan SetSkipBackupAttribute file tidak akan dicadangkan, terlepas dari direktori tempat file disimpan (bahkan Documents direktori). Anda dapat mengkueri atribut menggunakan GetSkipBackupAttribute metode , dan Anda dapat mengatur ulang dengan memanggil SetSkipBackupAttribute metode dengan false, seperti ini:

NSFileManager.SetSkipBackupAttribute (filename, false); // file will be backed-up

Berbagi data antara aplikasi iOS dan ekstensi aplikasi

Karena Ekstensi Aplikasi berjalan sebagai bagian dari aplikasi host (dibandingkan dengan aplikasi yang berisinya), berbagi data tidak disertakan secara otomatis sehingga diperlukan pekerjaan tambahan. Grup Aplikasi adalah mekanisme yang digunakan iOS untuk memungkinkan aplikasi yang berbeda berbagi data. Jika aplikasi telah dikonfigurasi dengan benar dengan hak dan provisi yang benar, aplikasi dapat mengakses direktori bersama di luar kotak pasir iOS normal mereka.

Mengonfigurasi Grup Aplikasi

Lokasi bersama dikonfigurasi menggunakan Grup Aplikasi, yang dikonfigurasi di bagian Sertifikat, Pengidentifikasi & Profil di iOS Dev Center. Nilai ini juga harus dirujuk dalam Entitlements.plist setiap proyek.

Untuk informasi tentang membuat dan mengonfigurasi Grup Aplikasi, lihat panduan Kemampuan Grup Aplikasi.

File

Aplikasi iOS dan ekstensi juga dapat berbagi file menggunakan jalur file umum (mengingat mereka telah dikonfigurasi dengan benar dengan pemberian dan penyediaan yang benar):

var FileManager = new NSFileManager ();
var appGroupContainer =FileManager.GetContainerUrl ("group.com.xamarin.WatchSettings");
var appGroupContainerPath = appGroupContainer.Path

Console.WriteLine ("Group Path: " + appGroupContainerPath);

// use the path to create and update files
...

Penting

Jika Jalur Grup yang dikembalikan adalah null, periksa konfigurasi pemberian izin dan profil provisi dan pastikan bahwa mereka benar.

Pembaruan versi aplikasi

Saat versi baru aplikasi Anda diunduh, iOS membuat direktori beranda baru dan menyimpan Application Bundle baru di dalamnya. iOS kemudian memindahkan folder berikut dari versi Application Bundle sebelumnya ke direktori beranda baru Anda:

  • Dokumen
  • Pustaka

Direktori lain juga dapat disalin di seluruh dan diletakkan di bawah direktori rumah baru Anda, tetapi tidak dijamin akan disalin, sehingga aplikasi Anda tidak boleh mengandalkan perilaku sistem ini.

Ringkasan

Artikel ini menunjukkan bahwa operasi sistem file dengan Xamarin.iOS mirip dengan aplikasi .NET lainnya. Ini juga memperkenalkan Application Sandbox dan memeriksa implikasi keamanan yang disebabkannya. Selanjutnya, ia mengeksplorasi konsep Application Bundle. Akhirnya, ia menghitung direktori khusus yang tersedia untuk aplikasi Anda dan menjelaskan peran mereka selama peningkatan dan pencadangan aplikasi.