Если вы хотите добиться правильного автономного кэширования на мобильных платформах, используя AppSync / Apollo с Xamarin, вам придется проделать немало работы. Во-первых, Apollo - это оригинальный клиент для кэширования GraphQL для Android и iOS, на котором основаны библиотеки Amazon AppSync SDK. Они просто создают некоторые специфические для Amazon функции.
Проблема в том, что, хотя библиотеки существуют как для iOS, так и для Android, их нельзя использовать как и в Xamarin, необходимо создать отдельный проект связывания, чтобы вы моглиВы можете вызывать библиотеки в своем коде C # для Xamarin.
Вот что вам нужно сделать:
- Создать проект привязки Xamarin.iOS для создания привязки C # AppSync iOS SDK и следуйте этой статье о том, как заставить его работать. Есть также довольно подробная информация о Microsoft Docs , но она предназначена для кода Objective-C, поэтому необходимо учитывать некоторые различия.
- Создание библиотеки привязок Java Xamarin.Android для созданияпривязка C # AppSync Android SDK . Следуйте этой статье в Microsoft Docs для получения инструкций о том, как это сделать.
- Теперь вы готовы использовать соответствующие библиотеки в Xamarin.iOS и Xamarin.Android. Если я не ошибаюсь, библиотеки AppSync автоматически кешируют данные на диске, поэтому вам даже не нужно ничего делать на вашей стороне. В любом случае, на данный момент я мог бы написать статью на трех страницах о том, как добиться чего-то, но если вы дойдете до этого, лучше всего следовать указаниям и учебным пособиям по репозиториям AppSync для iOS и Android, на которые я ссылался выше.
Редактировать: Другие варианты, которые вы могли бы рассмотреть, если выше, выглядит слишком много работы:
Попробуйте создать привязку для Apollo iOS и Apollo Android и попытайтесь добиться кэширования таким образом. В любом случае, AppSync SDK использует их внутри (как показано на рисунке ниже), поэтому они должны подходить для этой задачи. Источник
Если вы не привязаны к платформе Amazon, есть несколько других графовБазы данных и поставщики QL, которые могут лучше поддерживать Xamarin.
- Ответы GraphQL - чистый JSON. Вы можете просто попытаться создать для него механизм кэширования, если вам не нужна сложная дельта-обработка и т. Д.