언어 설정

Menu
Sites
Language
기어2에서 Notification 구현 방안 문의

기어 S의 경우 RichNotification 을 사용하여  Noti에서 Wearable-side app을 실행하도록 구현하였는데요..

기어 2, Neo에서는 RichNotification을 사용하지 못하는 걸로 알고있습니다.

따라서, 기어 2에서는 아래 Standard Notification을 방식을 이용하였습니다.

 

                Intent myIntent = new Intent("com.samsung.accessory.intent.action.ALERT_NOTIFICATION_ITEM");
                myIntent.putExtra("NOTIFICATION_PACKAGE_NAME", HOST_SIDE_PACKAGE);
                myIntent.putExtra("NOTIFICATION_VERSION", NOTIFICATION_SOURCE_API_SECOND);
                myIntent.putExtra("NOTIFICATION_TIME", System.currentTimeMillis());
                myIntent.putExtra("NOTIFICATION_MAIN_TEXT", "title");
                myIntent.putExtra("NOTIFICATION_TEXT_MESSAGE", "Body");
                Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.like);
                byte[] byteArray = convertResizeBitmapToByte(bitmap);
                myIntent.putExtra("NOTIFICATION_APP_ICON", byteArray);
      //        myIntent.putExtra("NOTIFICATION_LAUNCH_INTENT", HOST_SIDE_PACKAGE);
                  myIntent.putExtra("NOTIFICATION_LAUNCH_TOACC_INTENT", WEARABLE_SIDE_PACKAGE);
                myIntent.putExtra("NOTIFICATION_ITEM_IDENTIFIER", MY_NOTIFICATION_ID);
                myIntent.putExtra("NOTIFICATION_ID", CURRENT_NOTIFICATION_ID);
                myIntent.putExtra("NOTIFICATION_CUSTOM_FIELD1", "field01");
                myIntent.putExtra("NOTIFICATION_CUSTOM_FIELD2", "field02");
                sendBroadcast(myIntent);

 

여기서 질문이 있습니다.

myIntent.putExtra("NOTIFICATION_LAUNCH_TOACC_INTENT", WEARABLE_SIDE_PACKAGE)

해당 필드를 사용하면 Wearable-side app을 실행 할 수 있는데요 몇가지 문제점이 있습니다.

 

-처음 수신 시 5초 정도 Noti 화면이 보이고 사라지는데, 그 후에는 알림 list에서 해당 Noti 선택을 하면   Wearable-side app이 실행되기 때문에 Noti내용을 확인 할 수 없습니다.

즉, 유저가 처음 수신 시 화면을 놓친다면 더이상 Noti의 내용(time, title, body)을 볼 수가 없습니다.

 

-위에서 말한 동작처럼 알림 list에서 해당 Noti 선택을 하면 Wearable-side app이 실행되기 때문에 알림 list의 오른쪽 Badge 아이콘이 사라지지 않는 문제가 있습니다.

Noti 선택 시 Intent Action : "com.samsung.accessory.intent.action.CHECK_NOTIFICATION_ITEM" 을 사용하여 강제로 clearing 하여도 사라지지 않습니다.

 

위의 동작들이 의도 된 것인지 제가 잘못 구현하여 발생되는 문제인지 확인 부탁드립니다.

 

Edited by: lee on 04 8월, 2015

Responses

3 댓글
daniel kim

안녕하세요..

NOTIFICATION_LAUNCH_TOACC_INTENT에 Gear application을 명시하였기 때문에 Notification을 tap하면 해당 app이 실행되는 것으로 생각됩니다. myIntent.putExtra("NOTIFICATION_LAUNCH_TOACC_INTENT", WEARABLE_SIDE_PACKAGE); 이 라인을 comment 처리하고 test해보시는 것은 어떨까 합니다.

기본적으로 Gear2,Neo에서 다른 설정없이도 Notification은 보여주기 때문에 comment처리 후에는 notification의 내용을 보여주리라 생각됩니다.

 

lee

답변감사합니다.

 

그런데 저희가 원하는 방향은 noti 화면에서 Gear application을 실행하는 것입니다.

그래서 NOTIFICATION_LAUNCH_TOACC_INTENT 필드를 사용하였구요..

말씀하신것처럼 해당 필드를 사용하지 않으면 정상적으로 noti의 내용을 보여주긴 하지만 Gear application을 실행 할 수 없습니다.

위와 같은 제약사항 없이 해당 필드를 사용하는 것은 힘들까요?

 

더불어, Notification 관련하여 추가로 질문 드릴 것이 있습니다.

Host(android) 에서 Rich/Standard Notification 을 사용하기 위해서는 Mainfest 에 아래 permission이 필요한데요..

 

<uses-permission android:name="com.samsung.wmanager.ENABLE_NOTIFICATION" />

 

해당 permission을 추가하면 더이상 기어 매니저에서 자동으로 host app의 noti를 싱크하지 않는데요..

이것을 상황에 따라 수동과 자동을 동시에 쓰고 싶습니다.

예를들면, Gear application의 호출이 필요한 noti가 오면 해당 동작을 지원하는 Rich notification을 사용하고

그렇지 않은 noti들은 기어 매니저를 통해 자동으로 수신 되었으면 합니다.

하지만 한번 등록 된 uses-permission은 소스단에서 변경을 못하기 떄문에 구현이 불가능 할 것이라 생각되는데요..

혹 위와 같은 방향으로 구현 할 방법이 있을지 조언 부탁드립니다.

 

daniel kim

문서를 찾아보니 notification에 대한 gear application이 설정되어있으면 notification list의 1st depth를 tap하면 해당 gear application이 실행하는 것으로 명시가 되어있습니다. UI concept이 이렇게 나와있어서 임의로 변경이 가능한 것 같지는 않습니다. 또한 제가 아는 바로는  notification을 구별하여 dynamic하게Gear application을 호출하는 방법도 불가한 것 같습니다. 다른 분들의 comment를 기다려보는 것은 어떨까 합니다.