ionic2, Angular에서 모바일 접근성 적용하기 (1) : toast 개발/ionic2, Angular2019. 7. 24. 15:13
최근 ionic앱에 모바일 접근성(Mobile Accessibility)을 적용할 일이 생겼다.
ionic에는 크게 ionic-angular, ionic-native로 나누어지는데 플러그인들이 많은데 toast도 그중 하나다.
나는 평소 ionic을 테스트할 때 초반엔 ionic serve 명령어를 이용하여 웹으로 보기 때문에
toast를 포함하여 대부분의 기능을 ionic-angular에서 제공하는 것으로 사용하고 있었다.
그러나 ionic-angular에서 제공하는 것은 웹에서도 사용 가능하다는 장점이 있지만
cordova를 이용하여 디바이스(Android, IOS)에 올렸을 때,
native가 기본적으로 제공해주는 기능을 못 사용하는 경우가 있다는 걸 최근에 절실히 깨닫고 있다.
(코드를 꽤 많이 고쳐야 하는 경우도 생긴다)
아무튼 ionic-angular toast도 모바일 접근성을 테스트할 때 알게 된 사실인데,
삼성 안드로이드 폰에서 Voice Assistant를 이용하여 들으면
ionic 앱에서 ionic-angular toast를 읽어주지 않는다는 치명적인 단점이 있었다.
그래서 좀 찾아보고 직접 적용하여 테스트해 본 결과,
ionic-angular, ionic-native를 모두 적용하여 platform.is('cordova')로 분기를 태워 코드를 작성하면
웹과 앱 모두 적절한 toast를 사용할 수 있다.
(ionic-native toast를 사용하면 삼성 안드로이드 폰에서 Voice Assistant를 이용하여 들었을 때,
안드로이드 native로 작성된 앱의 toast처럼 정말 잘 읽어준다..!)
또한, ionic-angular http를 사용하면 apk를 release 했을 때 https://로 시작하는 URI를 제대로 동작시키지 못하지만,
이것도 위와 같은 방법으로 하면 해결된다. (ionic-angular, ionic-native 분기 적용)
=> https://로 시작하는 URI를 제대로 동작시키지 못하는 이유는 서버에서 SSL을 제대로 적용 못해서였고 서버에서 제대로 적용해주면 ionic-angular http를 사용해도 apk를 release 했을 때 제대로 동작함을 확인했음 (2020. 09. 03)
본론으로 들어가 코드를 작성해본다면 다음과 같다.
1. ionic-native toast를 설치한다.
$ ionic cordova plugin add cordova-plugin-x-toast
$ npm install @ionic-native/toast --save
2. app.module.ts에서 ionic-native toast를 providers에 넣는다.
import { Toast } from '@ionic-native/toast';
@NgModule({
.....
providers: [
.....
Toast
]
})
3. ts 파일을 작성한다.
import { Component } from '@angular/core';
import { Platform, ToastController } from 'ionic-angular';
import { Toast } from '@ionic-native/toast';
@Component({
selector: 'page-home',
templateUrl: 'home.html'
})
export class HomePage {
constructor(public platform: Platform,
public toastCtrl: ToastController,
public toast: Toast) {
if (this.platform.is('cordova') == false) {
let toast = toastCtrl.create({
message: "test~",
duration: 3000,
position: "middle",
cssClass: "toast-default"
});
toast.present();
} else {
this.toast.show("test~", "3000", "center").subscribe(
toast => {
console.log(toast);
}
);
}
}
}
그러나 후에 ios에서 테스트해보았는데 ios의 voice over 기능으로는 toast message를 읽어주지 않았다.
나중에 작성하겠지만 간단히 설명하자면 ios에서는 phonegap-plugin-mobile-accessibility plugin을 설치하고
(<any>window).MobileAccessibility.speak(msg);
위 코드를 이용하여 원하는 메시지를 읽어주면 된다.
↓자세한 내용은 아래 링크에 작성해놓았다.
'개발 > ionic2, Angular' 카테고리의 다른 글
ionic2, Angular에서 모바일 접근성 적용하기 (3) : ion-select ② (0) | 2019.07.25 |
---|---|
ionic2, Angular에서 모바일 접근성 적용하기 (2) : ion-select ① (0) | 2019.07.25 |
Request header field authorization is not allowed by Access-Control-Allow-Headers in preflight response. error 해결법 (0) | 2019.01.15 |
ionic2, Angular에서 월간 달력 쓰는 법 (0) | 2019.01.08 |
ionic2, Angular에서 일간 달력 쓰는 법 (0) | 2019.01.08 |