. Written by
수요일 FAQ 시간이죠. 이제 코로나에서도 안드로이드 기기의 Local Notification 을 지원하게 됐죠. 오늘은 이와 관련돼서 자주 문의 되는 질문을 다루겠습니다.
Local notification 를 감지하는 방법에는 두가지가 있습니다. 예를 들어 앱이 running 혹은 suspended 이고 유저가 notification을 tap 했다면 여러분 앱의 notification listener 가 fire 될 겁니다. 만약 앱이 exited (applicationExit) 상태이고 notification이 fire 된다면 notification 이 앱을 open 하고 launchArgs.notification parameter 를 set 할 겁니다. 여러분은 코드 내에서 그 notification parameter 를 set 하시고 notification 리스너를 call 하셔야 합니다. (왜냐하면 앱이 시작할 때 이것을 자동으로 call 하지 않거든요.)
local launchArgs = ... -- at the top of your program code
local function notificationListener( event )
-- Handle Local Notification here
end
여러분 앱이 유저가 notification event를 touching 해서 앱이 시작했는지 여부를 알아낼 수 있는 코드가 아래에 있습니다.
if launchArgs and launchArgs.notification then
-- Need to call the notification listener since it won’t get called if the
--the app was already closed.
notificationListener( launchArgs.notification )
end
답은 그렇게 할 수 없다 입니다. 만약 유저가 notification을 delete (or ignores) 했다면 notification listener 는 call 이 되지 않을 겁니다. 그리고 여러분의 앱은 그게 fire 되지 않으니까 그게 ignored 됐는지도 알 수 없습니다. (여러분 앱은 계속 notification schedule 을 track 할 겁니다. 그리고 notification 이 fire 되면 그 때 알겁니다.)
iOS와 Android 의 가장 큰 다른 점은 “badge.” 입니다. 그건 iOS device 에서 앱 아이콘에 표시되는 숫자인데요 notification 이 fire 되면 표시됩니다. 일지 않은 메세지의 갯수를 표시하게 되죠. 그 값과 의미는 앱에 의해 정의됩니다. 안드로이드는 이 badge number 를 이용하지 않습니다.
badge number 는 notification 이 fire 됐을 때 세팅됩니다. 혹은 아래 코드를 사용해서 update 할 수도 있는데요. 이 코드는 현재의 badge 값을 읽어서 숫자를 증가시키는 겁니다.
local badge = native.getProperty( "applicationIconBadgeNumber" )
badge = badge + 1
native.setProperty( "applicationIconBadgeNumber", badge )
이렇게 함으로서 notification이 fire 됐을 때 badge number를 무엇으로 할 건지 정할 수 있습니다. 일반적으로 각 notification 에 대해 badge number 를 increment 하죠. 이 badge number 를 clear 하시려면 native.setProperty 를 call 해서 badge 값을 0으로 하시면 됩니다.
최근에 릴리즈된 CoronaSDK (build 971) 에 Local Notification 에 대한 sample 앱이 있습니다. 이 샘플은 이 local notification을 사용할 때 활용할 수 있는 많은 기능들이 있습니다.
오늘은 여기까지 입니다. 유익한 시간 되었길 바랍니다.