2015. 4. 23. 10:02

FreshPlanet 의 ANE-Push-Notification 사용할때 참고

에어 모바일용 푸시알림 확장기능


ane 기능은 훌륭하지만 제작한 곳이 외주?일꺼리를 받는 곳이라 그런지
메뉴얼이나 세부적인 사용방법이 전무하다. 못하겠으면 의뢰를 해라는건지..
그래서 하루종일 헤매다가 알아낸 부분을 정리해 놓겠다.

1. 앱크래쉬 관련
위의 ane 를 적용해서 사용했을때 앱이 크래쉬되면서 종료되는 문제가 발생하였다.
찾아보니 안드로이드 4.4 이상은 android-support-v4.jar 파일이 필요한데 기본으로 포함되지 않아서 생기는 문제라고 하던데.
이를 해결하기 위해서는 android-support-v4.jar 파일을 포함해서 다시 컴파일 하는 방법외에는 없다.

하지만 이 ane 에는 아이폰용 라이브러리도 포함되어 있는데 맥이 없어서 컴파일을 다시 하게되면 아이폰용 기능은 사용 못할 수 밖에 없어서 고민중인 차에 마침 친절한 개발자 분께서 컴파일을 새로 해서 ane 파일을 올려주셨다. 그러니 아래 링크에서 받아서 사용하면 되겠다. 파일이 없어질 수 있으니 여기에도 따로 올리겠음.


AirPushNotification.ane



안드로이드 쪽은 푸시가 왔을때 상태바에 표시될 아이콘이 있어야 하는데 그 아이콘은 ane 파일에 포함되어야 한다.

변경하는 방법은 위의 ane 파일 확장자를 zip 파일로 바꾸고 압축프로그램으로 열기를 해서 이미지를 변경해주면 된다.

이미지는 /META-INF.ANE/Android-ARM/res/drawable-xhdpi 에 존재하니 동일한 크기로 만들어서 변경해주면 된다.

다만!! 절대 압축을 푼후에 다시 압축하면 안된다.(컴파일 할때 ane 파일을 읽어들이지 못함)

압축프로그램으로 열어서 zip 파일에 이미지를 추가하는 방식으로 해야 정상적으로 처리가 된다.


2. 앱실행중 푸시 메세지를 앱내부에서 수신

PushNotificationEvent.NOTIFICATION_RECEIVED_WHEN_IN_FOREGROUND_EVENT

이 이벤트를 사용하면 앱에서 푸시메세지를 받을 수 있을 것처럼 되어 있으나

앱이 실행중이어도 외부(상태바)에 알림이 들어오고 이벤트가 수신이 안되었다.

ane 의 소스(java파일)을 죽어라 뒤진결과 setIsAppInForeground 를 true로 해줘야 수신이 되는걸 알아냈다.


PushNotification.getInstance().setIsAppInForeground(true);


다만 아직까지 백그라운드로 실행중일때 푸시수신을 아래 이벤트로 받는 방법은 찾아내지 못했다.

PushNotificationEvent.APP_STARTED_IN_BACKGROUND_FROM_NOTIFICATION_EVENT


3. 푸시 메세지 클릭 시 앱실행

나와있는 설정대로 사용할 경우 메세지를 클릭하면 메세지가 없어지고 아무런 동작도 하지 않는다.

안드로이드의 제반지식이 없어 좀 헤맷는데.

매니페스트에 아래 부분을 추가하면 메세지 클릭 시 앱이 실행되고 addListenerForStarterNotifications 로 설정된

핸들러로 푸시 메세지를 받을 수 있게 된다.

PushNotification.getInstance().addListenerForStarterNotifications(핸들러)


//매니페스트 추가부분

<activity android:exported="true" android:name="com.freshplanet.nativeExtensions.NotificationActivity" android:theme="@android:style/Theme.Translucent.NoTitleBar.Fullscreen" />


에어로 모바일 앱을 만들던 cocos2d로 만들던 안드로이드와 ios 의 기본적인 정보를 알고 있어야 할듯.