firebase
flutter FCM 메시지 ios 수신시 알림음 및 진동 울리지 않는 현상
이나주니
2023. 6. 14. 17:21
반응형
fcm을 평소 사용하면서 개발을 해왔다
하지만 언제부터인가 아이폰에서만 PUSH 가 와도 진동이나 알림음이 들리지 않는것같아
골머리를 앓았다. 포그라운드에서는 정상적이지만 백그라운드에서 되질 않아 이곳 저곳 다 수정해보고 apn도 새로 받아 수정도 해보았지만 똑같았다,
알고보니 메시지를 fcm 서버로 보낼때 json 값으로 값으 보내줘야 했던것
android는 디폴트가 알림음을 울려주는것이라면 IOS에서는 그렇지 않았다
해결방법
{
"message": {
"token": "토큰",
"notification": {
"title": "Test",
"body": "Test message"
},
"android": {
"notification": {
"sound": "default"
}
},
"apns": {
"payload": {
"aps": {
"sound": "true"
}
}
}
}
}
위와 같이 JSON 형태로 서버로 값을 보내줘야 정상적으로 알림음이 들어오는것을 알수 있다
body에 이런식으로 보냄
코드 만드는 샘플
public test() {
String title = "받장 휴대폰인증 테스트 메시지";
String body = "인증번호는" + "[" + numStr + "]" + "입니다.";
GoogleCredentials googleCredentials = GoogleCredentials
String message = makeMessage(targetToken, title, body);
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = RequestBody.create(message,
MediaType.get("application/json; charset=utf-8"));
Request request = new Request.Builder()
.url(API_URL)
.post(requestBody)
.addHeader(HttpHeaders.AUTHORIZATION, "Bearer " + getAccessToken()) //header에 accesstoken을 추가
.addHeader(HttpHeaders.CONTENT_TYPE, "application/json; UTF-8")
.build();
Response response = client.newCall(request).execute();
System.out.println(response.body().string());
}
private String makeMessage(String targetToken, String title, String body) throws JsonParseException, JsonProcessingException {
FcmMessage fcmMessage = FcmMessage.builder()
.message(FcmMessage.Message.builder()
.token(targetToken)
.notification(FcmMessage.Notification.builder()
.title(title)
.body(body)
.image(null)
.build()
).build()).validateOnly(false).build();
return objectMapper.writeValueAsString(fcmMessage); //FcmMessage 생성후 objectmapper를 통해 string으로 변환하여 반환
}
[UMC-3rd & Springboot] rest API 서버 구현 - FCM 문자 인증 #3
👌FCM > Firebase Cloud Messaging 메시지를 안정적으로 무료 전송할 수 있는 크로스 플랫폼 메시징 솔루션이다. FCM 구현에는 두가지 구성요소가 필요힌데, 첫번째는 Firebase용 Cloud Functions 또는 앱 서버
velog.io
이분 꺼 참고 함
기타 참고용은 아래 링크에서 확인하면 좋을것같다
https://firebase.google.com/docs/cloud-messaging/http-server-ref?hl=ko
Firebase 클라우드 메시징 HTTP 프로토콜
firebase.google.com
반응형