#xamarin #xamarin.ios #xamarin.android #xamarin.forms #cross-platform
#xamarin #xamarin.ios #xamarin.android #xamarin.forms #кросс-платформенный
Вопрос:
Мне нужно реализовать приложение мертвого счета с использованием xamarin. Для этого мне нужно получить доступ к шагомеру / акселерометру с Android / ios и Windows phone. Поскольку у них есть свои собственные API, которые нужно вызывать, я полагаю, что подход будет заключаться в создании интерфейса в проекте PCL, а затем иметь собственные реализации для каждой платформы. Затем их можно сделать видимыми с помощью сборок. Помимо этого, существуют ли какие-либо подходы, с помощью которых весь код может быть реализован в самом проекте PCL? Не имея собственных реализаций для каждой платформы?
Ответ №1:
Логика вашего приложения может быть выполнена в PCL, но вызов шагомера или акселерометра должен выполняться изначально.
Основной подход (просто пример)
public interface IPedometer
{
int GetSteps();
}
и этот интерфейс находится в вашем PCL.
На каждой собственной платформе создайте класс (например, NativePedometer), реализуйте этот интерфейс и исходный код для получения результата.
Используйте внедрение зависимостей на каждой собственной платформе, например
DependencyService.Register<NativePedometer>();
Затем просто используйте приведенное ниже в вашем PCL.
DependencyService.Get<IPedometer>()
и выполните бизнес-логику в вашем PCL. Это позволяет повторно использовать как можно больше кода на разных платформах.
Это лучший подход, но вы не можете избежать написания собственного кода, а под собственным кодом я подразумеваю C # в традиционных / собственных проектах Xamarin.
Комментарии:
1. У Джеймса Монтеманьо есть счетчик шагов. Куча примеров при поиске в Google собственных реализаций. github.com/jamesmontemagno/My-StepCounter