Android Application Research Series 1
알림 센터에 여러 개의 사진 미리보기 (preview of grouped photos)
안드로이드 개발기
안드로이드를 공부하고 개발하다보니 개인적으로 앱을 만들어보고 싶은 생각만 58000번은 했었다. 항상 실행은 하지 않고 생각만 했는데 근래 조금씩 일단 시작하기로 해서 먼저 도안을 그려나가고 있다. 필요한 기능들과 그리고 어떤 내부 로직을 가져야하는지 조금씩 만들어가고 있다. 기존에 몇 앱들을 만들어봤지만 만든 이도 사용하기 싫을 정도로 별로였다. (하지만 만든 이 만큼은 자신의 앱을 사랑하려고 노력해야 한다..) 이번에는 제대로 만들어보기 위해 탄탄한 초석을 준비하면서 만들어가고 있다. 또 필요한 기능을 GPT 에게 물어보면 만들어줄거 같았는데 계속 동문서답만 해서 한번 직접 차근차근 파보려고 한다.
알림 센터에 관하여, 사실은 아니지만
케이스 바이 케이스겠지만 개발하는 것도 재밌지만 누군가가 개발한 것으로 역으로 살펴보는 것 역시 가슴 뛰는 일이라고 생각한다. 이 시리즈는 꽤 짧지 않을 거 같아서 좋은 결과가 없더라도 시간이 될 때 조금씩 블로그에 기재해보려고 한다.
살펴볼 것으로는 안드로이드 알림을 만들다보니 알림 센터에 메시지가 올 때 메시지를 미리 볼 수 있는데 요즘은 이모티콘이나 사진도 미리 볼 수 있어서 가끔 안읽씹에 용이하다. 하하 넝담.. 그런데 일부 메신저 앱은 보낸 이가 여러 장의 사진을 같이 묶어 보내면 알림 센터에 같이 보낸 사진들의 총 갯수가 보이면서 미리보기가 지원이 안된다. 이에 대해 어떻게 하면 미리볼 수 있는 방법이 있을까 궁금하였다.
그래서 알림에서 날라오는 묶음 사진을 미리 볼 수 있는 방법이 있는지 확인해보고자 한다.
먼저 보낼 때 아래와 같이 여러 개의 사진을 묶어서 보낸다.
받는 쪽에서 아래와 같이 몇 장의 사진을 받았는지 메세지 형태로만 보이는 걸 확인할 수 있다.
알림센터에서도 몇 장의 사진만 받았는지 보여준다.
살펴볼 메신저에서는 NotificationMessage
라는 클래스를 분석할 예정이다.
참고로 메신저 앱의 컴파일된 classes3.dex, classes4.dex 파일을 확인하면 NotificationMessage
관련 클래스를 확인할 수 있다.
본격적으로 해당 클래스가 알림을 받을 때 형성되는 데이터 구조를 확인해보고자 한다.
처음에 보낸 메세지를 받는 쪽에서 확인하면 아래와 같은 데이터 형식을 확인할 수 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
NotificationMessage(
title=dummy
, message=redacted
, messageWithoutEmoticonAltText=redacted
, profileUrl=null
, iconResId=0
, subText=null
, ticker=redacted : redacted
, unreadCount=14
, hasNotificationKeyword=false
, quiet=false
, chatLog=...
, type=redacted
, chatRoomId=redacted
, userId=redacted
, message=5 photos
, attachment={..........
계속 내려가다보면 중간에 아래와 같은 부분이 있다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
,\"thumbnailUrls\":[
\"https://talk.kakaocdn.net/redacted/redacted/redacted/redacted/redacted.jpg?credential=redacted&expires=redacted&signature=redacted..convert=resize&w=120&h=90\"
,\"https://talk.kakaocdn.net/redacted/redacted/redacted/redacted/redacted.jpg?credential=redacted&expires=redacted&signature=redacted..convert=resize&w=90&h=120\"
,\"https://talk.kakaocdn.net/redacted/redacted/redacted/redacted/redacted.jpg?credential=redacted&expires=redacted&signature=redacted..convert=resize&w=90&h=120\"
,\"https://talk.kakaocdn.net/redacted/redacted/redacted/redacted/redacted.jpg?credential=redacted&expires=redacted&signature=redacted..convert=resize&w=90&h=120\"
,\"https://talk.kakaocdn.net/redacted/redacted/redacted/redacted/redacted.jpg?credential=redacted&expires=redacted&signature=redacted..convert=resize&w=90&h=120\"
]
,\"thumbnailWidths\":[120,90,90,90,90],\"thumbnailHeights\":[90,120,120,120,120]}
, createdAt=redacted
, v=.....
, userId=redacted
, chatId=redacted
, chatLogId=redacted
, messageType=MultiPhoto
, emoticonUrl=null
, emojiResId=0
, xconVersion=-1
, uri=null
, notificationId=null
, hasNotificationReply=false
, mentioned=false
, hasNotificationVoiceroom=false
, isGroupChat=false
, isOpenChat=false
, isSecretChat=false
, isInSilentChatRoom=false)
여기서 thumbnailUrls 부분이 있는데 이에 접근하면 아래와 같이 상대방이 보낸 사진을 메신저 cdn 링크를 통해 볼 수 있다.
참고로 동영상 같은 경우 thumbnailUrls 존재하는지 확인해봤지만 존재하지 않았다.
url 을 조합하면 다른 사진도 볼 수 있을까 했는데 실제 url 은 암호화된 여러 해시로 감싸져 있어 쉽게 접근은 불가하게 만들어 안전해 보인다.
다음에는 위 내용에 이어서 해당 정보를 실제로 파싱하는 부분을 진행해보겠다.
If you find any errors, please let me know by comment or email. Thank you.