Xamarin.Forms Quickstart를 시도했습니다.
Xamarin.Forms Quickstart
Xamarin.Forms를 사용한 앱의 근거로서 좋은 소재군요. 이것을 사용한 크로스 플랫폼 개발이 어떤 것인지 왠지 알 수 있습니다.
1. 이 자습서에서 할 수 있는 앱
이것은 미국에서 볼 수있는 알파벳으로 표시된 전화 번호를 일반 전화 번호로 변환하여 전화를 걸 수있는 앱입니다 (참고 : 미국 전화번호 알파벳 표기)
만들어 보면 아래 그림과 같은 움직임을하는 앱이 완성됩니다.
2. 이 프로그램의 구조
실제로 이 튜토리얼대로 프로그램을 만들어 보면 알겠습니다만, 아래 그림과 같은 구조로 되어 있네요.
UI나 비즈니스 로직은 각 OS 공통으로 쓸 수 있는 것 같습니다만, 디바이스의 조작을 하는 부분(이 튜토리얼에서는 전화를 걸는 부분)은, 개별적으로 로직을 만들 필요가 있는 것 같습니다.
그래서, 아마도, 예를 들면 GPS 정보의 취득과 같은 것은, 개별적으로 쓸 필요가 있을 것 같네요.
그리고, 이 공통 부분과 각 OS 개별적으로 쓰는 부분의 데이터의 전달을,
(1) 인터페이스
(2) DependencyService.Get();
(3) [assembly: Dependency(typeof(<클래스명>))]
의 3개를 사용해 실현하고 있습니다.
각 OS마다의 프로그램을 짜는 부분을, 이 튜토리얼에서는
・「IDialer」인터페이스를 준비
· 각 OS마다 "PhoneDialer"클래스로 구현
라는 방법을 채택하고 있습니다. 보통의 객체 지향의 구현 방법이군요.
이 구현한 클래스의 인스턴스를 취득하기 위해서, 「DependencyService.Get();」와 「[assembly: Dependency(typeof(<클래스명>))]」」를 사용하고 있습니다.
이 인스턴스의 취득을 하고 있는 부분이 아래 그림의 부분입니다. 여기에 브레이크 포인트를 넣어 보면 지금 현재 실행중인 단말기의 인스턴스를 얻을 수 있음을 알 수 있습니다.
DependencyService.Get(); 라는 프로그램으로 인스턴스를 얻을 수 있음을 알 수 있습니다.
여기서, 시험에 각 OS마다 쓴 프로그램(PhoneDialer.cs)에 있는 「[assembly: Dependency(typeof(PhoneDialer))]」를 코멘트 아웃하고, 한번 더 디버그 실행해 보겠습니다.
그러면 그림에 표시된 것처럼 인스턴스를 얻을 수 없어 null이 됩니다. 「[assembly: Dependency(typeof(<클래스명>))]]」가 없으면 안되는 것 같네요.
아직 다루는 정도의 지식밖에 없지만, Xamarin.Forms로 개발하는 경우,
(1) UI, 비즈니스 로직은 로직을 공통화할 수 있다
(2) 디바이스를 직접 사용하는 부분은 개별적으로 로직을 쓸 필요가 있다
그렇죠?
디바이스의 기능을 사용하는 부분이라고 해도, 예를 들면 HTTP 통신이나 전파가 권외가 되어 있을지 어떨지도 개별적으로 로직이 필요한지, 아직 아직 조사하지 않으면 안 되는 것은 있군요.
Reference
이 문제에 관하여(Xamarin.Forms Quickstart를 시도했습니다.), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/mash0510/items/a380ba4764ea46dd9494텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)