SMS, MMS 수신시에 후처리를 하는 앱을 개발진행중인데, 문제가 발생하여 조언을 구하고자 글 작성합니다.
SMS, MMS 수신 확인을 위해 BroadcastReceiver 사용하여 개발 진행한 상태입니다.
아래는 기존 BroadcastReceiver의 AndroidManifest.xml 설정값입니다.
<receiver
android:name=".control.receiver.SmsReceiver"
android:enabled="true">
<intent-filter android:priority="9999">
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
<intent-filter>
<action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED"/>
<data android:mimeType="application/vnd.wap.mms-message"/>
</intent-filter>
</receiver>
개발 후에 테스트 진행중에 특정 상황에서 메시지 수신이 안되는걸 확인하고 이유를 찾아보니
채팅플러스 기능을 켜고 전송시에 앱에서 인식이 안되는걸 확인했습니다.
채팅플러스라는 기능이 RCS 기반으로 데이터를 전달해
위의 receiver를 통하지 않는걸로 확인되어 관련 정보 검색하다 아래 링크의 글을 찾았습니다.
https://stackoverflow.com/questions/36953785/how-do-i-intercept-a-rich-communication-message-on-android
위 글 참조해서 receiver를 작성하고 테스트 진행했습니다.
아래는 receiver의 onReceive 구현 코드와 출력된 log 데이터입니다.
public void onReceive(Context context, Intent intent) {
mContext = context;
DebugLog.e(TAG, "RCS Receiver");
String action = intent.getAction();
Bundle bundle = intent.getExtras();
DebugLog.e(TAG, "Received action : " + action);
Set<String> keys = bundle.keySet();
for (String key : keys) {
DebugLog.e(TAG, "key : " + key + ", value : " + bundle.get(key));
}
}
E/RcsReceiver: Function : onReceive, Line : 26, Log : RCS Receiver
E/RcsReceiver: Function : onReceive, Line : 29, Log : Received action : com.samsung.rcs.framework.instantmessaging.action.RECEIVE_NEW_MESSAGE
E/RcsReceiver: Function : onReceive, Line : 32, Log : key : message_id, value : 42
E/RcsReceiver: Function : onReceive, Line : 32, Log : key : message_type, value : 1
E/RcsReceiver: Function : onReceive, Line : 32, Log : key : message_direction, value : 0
E/RcsReceiver: Function : onReceive, Line : 32, Log : key : is_group_chat, value : false
E/RcsReceiver: Function : onReceive, Line : 32, Log : key : from, value : <개인정보>
E/RcsReceiver: Function : onReceive, Line : 32, Log : key : chat_id, value : <개인정보>
테스트 진행결과 SMS 수신시 수신 이벤트는 정상적으로 받아지는걸 확인했지만,
이미지 파일 전송시에는 위 로직 자체를 타지않아 별도의 로그가 찍히지 않고,
extra 내의 value값엔 메시지 내용같은 필요한 값이 획득이 안되는 문제도 있었습니다.
value값을 보면 chat_id, message_id 등의 값을 통해 메시지 정보를 획득하는 방법이 있을것도 같은데,
권한값을 보면 삼성에서 자체적으로 개발한 방법으로 진행된듯해 마땅한 해결책이 안나오더군요.
해결해야하는 문제점은 크게 두가지가 있습니다.
1. 채팅플러스를 통한(RCS 형식의) 메시지 수신시에 메시지 내용 확인이 불가능함
2. 동일한 방법으로 이미지 전송시에 전송여부 및 파일 확인이 불가능함
위 문제 관련해서 조언 부탁드리겠습니다.