Xamarin.iOS uygulamanıza çevrimdışı veri eşitleme ekleme
Bu öğretici, Xamarin.iOS için Azure Mobile Apps'in çevrimdışı eşitleme özelliğini kapsar. Çevrimdışı eşitleme, ağ bağlantısı olmadığında bile son kullanıcıların bir mobil uygulamayla (verileri görüntüleme, ekleme veya değiştirme) etkileşim kurmasına olanak tanır. Değişiklikler yerel veritabanında depolanır. Cihaz yeniden çevrimiçi olduktan sonra bu değişiklikler uzak arka uçla eşitlenir.
Bu öğreticiye başlamadan önce, uygun bir arka uç hizmeti oluşturmayı içeren Xamarin.iOS Hızlı Başlangıç Öğreticisi'ni tamamlamış olmanız gerekir.
Çevrimdışı eşitleme özelliği hakkında daha fazla bilgi edinmek için Azure Mobile Apps'te Çevrimdışı Veri Eşitleme konusuna bakın.
Uygulamayı çevrimdışı eşitlemeyi destekleyecek şekilde güncelleştirme
Çevrimiçi işlemde, için okuma ve yazma IRemoteTable<T>
işlemleri gerçekleştirmeniz gerekir. Çevrimdışı eşitlemeyi kullanırken, bunun yerine okuma ve yazma IOfflineTable<T>
işlemi yapılır. IOfflineTable
, bir cihaz içi SQLite veritabanı tarafından yedeklenir ve arka uç veritabanıyla eşitlenir.
Visual Studio'da:
Çözüme
TodoApp
sağ tıklayın, ardından Çözüm için NuGet Paketlerini Yönet... seçeneğini belirleyin.Yeni sekmede Gözat'ı seçin ve arama kutusuna Microsoft.Datasync.Client yazın.
Microsoft.Datasync.Client.SQLiteStore
Paketi seçin.Sağ bölmede tüm istemci projelerini (proje hariç)
TodoAppService.NET6
seçin.Yükle'yi seçin.
İstendiğinde lisans sözleşmesini kabul edin.
Uzak hizmet istemcisini güncelleştirme
TodoApp.Data
Projeyi açın ve sınıfını RemoteTodoService.cs
(dizinin içindeServices
) bulun. sınıfını aşağıdaki gibi güncelleştirin:
Dosyanın en üstüne aşağıdaki
using
deyimi ekleyin:using Microsoft.Datasync.Client.SQLiteStore;
tanımını
_table
olarakIOfflineTable<TodoItem>
değiştirin:/// <summary> /// Reference to the table used for datasync operations. /// </summary> private IOfflineTable<TodoItem> _table = null;
Çevrimdışı veritabanı konumunu depolamak için yeni bir özellik ekleyin:
/// <summary> /// The path to the offline database /// </summary> public string OfflineDb { get; set; }
InitializeAsync
Çevrimdışı veritabanını tanımlamak için yöntemini güncelleştirin:// Create the offline store definition var connectionString = new UriBuilder { Scheme = "file", Path = OfflineDb, Query = "?mode=rwc" }.Uri.ToString(); var store = new OfflineSQLiteStore(connectionString); store.DefineTable<TodoItem>(); var options = new DatasyncClientOptions { OfflineStore = store, HttpPipeline = new HttpMessageHandler[] { new LoggingHandler() } }; // Create the datasync client. _client = TokenRequestor == null ? new DatasyncClient(Constants.ServiceUri, options) : new DatasyncClient(Constants.ServiceUri, new GenericAuthenticationProvider(TokenRequestor), options); // Initialize the database await _client.InitializeOfflineStoreAsync(); // Get a reference to the offline table. _table = _client.GetOfflineTable<TodoItem>(); // Set _initialized to true to prevent duplication of locking. _initialized = true;
çevrimdışı eşitleme yapmak için güncelleştirme
RefreshItemsAsync()
:/// <summary> /// Refreshes the TodoItems list manually. /// </summary> /// <returns>A task that completes when the refresh is done.</returns> public async Task RefreshItemsAsync() { await InitializeAsync(); // First, push all the items in the table. await _table.PushItemsAsync(); // Then, pull all the items in the table. await _table.PullItemsAsync(); return; }
Çevrimdışı veritabanı konumunu ayarlama
Projede TodoApp.iOS
, dosyayı düzenleyin ViewControllers\HomeViewController.cs
. oluşturucuda tanımını RemoteTodoService
aşağıdaki gibi değiştirin:
TodoService = new RemoteTodoService(async () => await GetAuthenticationToken())
{
OfflineDb = Xamarin.Essentials.FileSystem.AppDataDirectory + "/offline.db"
};
Kimlik doğrulama öğreticisini tamamlamadıysanız tanım aşağıdaki gibi görünmelidir:
TodoService = new RemoteTodoService()
{
OfflineDb = Xamarin.Essentials.FileSystem.AppDataDirectory + "/offline.db"
};
Uygulamayı test etme
Uygulama, yenileme simgesine basılana kadar arka uçla eşitlenmez. Test etmek için:
Azure portalını açın.
Hızlı başlangıç için kaynakları içeren kaynak grubunu açın.
quickstart
Veritabanını seçin.Sorgu düzenleyicisini (önizleme) seçin.
Veritabanı için ayarladığınız kimlik bilgilerini kullanarak SQL Server kimlik doğrulamasıyla oturum açın.
- Gerekirse, IP adresiniz için erişime izin vermeniz istenir. İzin verilenler listesini güncelleştirmek için bağlantıyı seçin, ardından oturum açmayı yeniden denemek için Tamam'a basın.
Sorgu düzenleyicisine girin
SELECT * FROM [dbo].[TodoItems]
. Daha sonra Çalıştır'ı seçin.
Geçerli TodoItems listesi görüntülenir.
Şimdi uygulamanız aracılığıyla bazı değişiklikler yapın. YENİLEME (henüz) TUŞUNA BASMAYıN.
Azure portalında SQL deyimini tekrarlayın ve veritabanındaki verilerde hiçbir değişiklik yapılmadığını doğrulayın.
Kuyruktaki verileri arka uç hizmetine göndermek için uygulamanızda Yenile simgesini seçin. Çıkış Hata Ayıklama penceresinde HTTP işlemlerinin gerçekleştiğini görürsünüz.
Azure portalında SQL deyimini tekrarlayın ve değişikliklerinizin uzak hizmete gönderildiğini doğrulayın.
Kaynakları temizleme
Başka bir hızlı başlangıç öğreticisi gerçekleştirmediğiniz sürece, arka uç hizmetiyle ilişkili kaynakları şimdi silebilirsiniz.
- Azure portalını açın.
- Hızlı başlangıç kaynaklarını tutan kaynak grubunu seçin.
- Kaynak grubunu sil'i seçin.
- Silme işlemini onaylamak için yönergeleri izleyin.
Azure CLI'yi de kullanabilirsiniz:
az group delete -g quickstart
Kaynakları dağıtmak için Azure Geliştirici CLI'sini azd down
kullandıysanız, bunun yerine komutunu kullanabilirsiniz.
Silme işleminin tamamlanması birkaç dakika sürer.
Sonraki adımlar
- NASIL YAPıLıR belgelerini gözden geçirin:
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin