iamport서비스를 사용하는, 결제를 위한 alloy widget을 만들고 있습니다만..

중간사항 공유합니다.

요약: 필요했던 기능이 최근 PR이 있었고 Merge가 되었습니다.

필요한 기능

국내 PG사와 카드사들의 앱들 복잡한 이 상황을 뚥기 위해 필요했던 기능은 특정 url을 완전히 사전에 막는 것입니다.
네이티브에서는 iOS는 shouldStartLoadWithRequest, 안드로이드는 shouldOverrideUrlLoading에서 return값에 따라 요청을 여부를 결정합니다.

Titanium에서 비슷한 일을 하는 방법 하지만 문제는 있다.

현재 버전(TiSDK 5.2.x)기준에서 설명해보겠습니다. beforeload이벤트에서 url을 확인하여 stopLoading을 이용할 경우 실제 request가 전달되어 버립니다. beforeload 이벤트는 UI 메인쓰레드의 흐름과 무관하게 비동기로 호출되다보니 요청을 사전에 막는게 아니라 일단 요청하고 stopLoading을 하게 됩니다.

얼마 전에 올라왔던 글이 바로 이런 내용이었습니다.

오늘 결제 위젯을 만들려고 자세히 살펴보다 이런 사항을 확실하게 알게 되었죠.

5.4.0에 추가되는 Webview의 blacklistedURLs 속성과 stopBlackListUrl 이벤트

정확히 위에서 설명한 요구사항에 맞는 기능으로 새로운 속성과 event가 추가되었습니다.
다행이네요~ 일단 현재 버전에 아래 commit 내용을 참고하여 사용해야겠습니다. :hugs:

https://jira.appcelerator.org/browse/TIMOB-23327

https://github.com/appcelerator/titanium_mobile/commit/caa3fab55144a1524870d5593673fd2e227e8b35