chrisdg
10
2021-02-01 13:44:04 작성 2021-02-01 13:45:08 수정됨
2
150

안드로이드 푸시 수신 관련 질문드립니다.


현재 웹앱 형태로 서버(spring)에서 푸시를 발송하는 부분 개발을 하고있는데

iOS에서는 송수신이 정상적으로 진행이 되는데 안드로이드에서는 수신이 이뤄지고 있지 않습니다.

테스트 하면서 며칠 전까지 만 해도 정상적으로 작동 되다가 어제부터 수신이 제대로 되지 않습니다.

원인 파악조차 제대로 되고 있지 않아서 질문드립니다.


@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
// [START_EXCLUDE]
// There are two types of messages data messages and notification messages. Data messages
// are handled
// here in onMessageReceived whether the app is in the foreground or background. Data
// messages are the type
// traditionally used with GCM. Notification messages are only received here in
// onMessageReceived when the app
// is in the foreground. When the app is in the background an automatically generated
// notification is displayed.
// When the user taps on the notification they are returned to the app. Messages
// containing both notification
// and data payloads are treated as notification messages. The Firebase console always
// sends notification
// messages. For more see: https://firebase.google.com/docs/cloud-messaging/concept-options
// [END_EXCLUDE]

// TODO(developer): Handle FCM messages here.
// Not getting messages here? See why this may be: https://goo.gl/39bRNJ
Log.d(TAG, "From: " + remoteMessage.getFrom());

// Check if message contains a data payload.
if (remoteMessage.getData().size() > 0) {
Log.d(TAG, "Message data payload: " + remoteMessage.getData());

if (/* Check if data needs to be processed by long running job */ true) {
// For long-running tasks (10 seconds or more) use WorkManager.
scheduleJob();
} else {
// Handle message within 10 seconds
handleNow();
}

}

// Check if message contains a notification payload.
if (remoteMessage.getNotification() != null) {
Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
}

// Also if you intend on generating your own notifications as a result of a received FCM
// message, here is where that should be initiated. See sendNotification method below.
}
현재 수신 받는 부분입니다.
정확한 문제 해결보다는 어떤 상황에서 수신이 안되는지 정도만 알아도 해결 방법을 나름 찾을 수 있을 것 같습니다.
혹시 안드로이드 푸시 송수신 관련해서 주의해야하는 부분도 알려주시면 감사하겠습니다.
Message message = Message.builder() .setAndroidConfig(
				 	AndroidConfig.builder().setTtl(3600*1000)
				 		.setPriority(AndroidConfig.Priority.NORMAL)
				 		.setNotification(AndroidNotification.builder() .setTitle(title)
				 		.setBody(content)
				 		//.setIcon("update") 
				 		.setColor("#f45342") .build())
				 		.build()) .setToken(tokenValue).build();
안드로이드 메시지 빌드되는 부분입니다.

0
  • 답변 2

  • Willee21
    119
    2021-02-03 17:26:37

    잘되었다면서요, 그러면 코드에 문제는 없는 경우가 대부분이죠.


    잘되다가 안되는 경우는 가장 높은 확률로
    서버나 클라쪽에서
    최근에 커밋된 라인들을 보시고,
    복원했을 때 제대로 동작하면,
    그 사이 수정된 코드가 문제를 야기한 겁니다.

    작성된 코드의 문제라면
    어쩔 땐 되고 어쩔 땐 안되는 상환이
    처음부터 발생했겠죠.
    그런 경우라야
    초기 코드상에서 헛점이 있는 경우겠죠.

    FCM의 경우 계속 업데이트 되기 때문에,
    Firebase에서 권고하는 내용에 따랐는지 훑어 보는게 최고입니다.

    최근에 FCM 권고안에 따라 개발했는데,
    특별히 테스트도 없이 그냥 동작했습니다.

    또 하나는 Firebase Crashlytics에서 오류난 것들을 보는 방법이 있겠습니다.

    Firebase는 대부분 서버에서 보내고, 클라는 표시해 주는 것이기 때문에,
    특별히 커스톰 데이터 파싱을 잘못한게 아니라면,
    클라쪽에서 오류날 부분이 별로 없습니다.

  • chrisdg
    10
    2021-02-04 15:22:09

    답변 정말 감사합니다.

    현재 서비스 키를 변경 후 정상적으로 작동 합니다.

    말씀 해주신 부분을 더 확인해보도록 하겠습니다.


  • 로그인을 하시면 답변을 등록할 수 있습니다.