안드로이드 푸쉬 알람..
Expo로 개발할 땐 expo-notifications을 사용해서 푸쉬알람을 했다.
그땐 분명 잘 된거야..
안드로이드 헤드업 푸쉬알람 (알람이 위에 뜨는 것)
cli로 바꾸고, 헤드업 알람이 안되기 시작했다.
씨게 고통을 받았다. 씨게..
react-native-firebase/messaging 을 사용하면서
셋팅 다 했는데, 안드로이드에서 헤드업 알람이 안되는 나같은 사람들을 위해 글을 남긴다..
결론적으로
자바단을 작업해줘야한다.
FCM API은 head-up을 아직 지원안한다는 말을 들었고 (2020년 기준)
nodejs에서 firebase-admin도 지원안한다는 결과를 얻었다.
진짜 별별짓을 다했는데..
여기서 해결했다...ㅠ 슨상님...
MainActivity.java를 수정해줘야한다..
import com.facebook.react.ReactActivity;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.os.Build;
import android.os.Bundle;
public class MainActivity extends ReactActivity {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel notificationChannel = new NotificationChannel("500", "MainChannel", NotificationManager.IMPORTANCE_HIGH);
notificationChannel.setShowBadge(true);
notificationChannel.setDescription("Test Notifications");
notificationChannel.enableVibration(true);
notificationChannel.enableLights(true);
notificationChannel.setVibrationPattern(new long[]{400, 200, 400});
//notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PUBLIC);
NotificationManager manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(notificationChannel);
}
}
....
셋팅 해주면
이렇게 헤드업 알람으로 오게된다.
채널id가 필수로 있어야 헤드업이 된다. 500으로 설정했으니,
백단(nodejs)에서 보낼 때도 500으로 맞춰줬다.
try {
let { target_token } = req.body;
const message = {
notification: {
title: 'noti-title',
body: 'noti-body',
},
data: {
id: 'id',
title: 'data-title',
body: 'data-body',
origin: 'chat',
},
android: {
priority: 'high',
notification: {
title: '안드 타이틀',
body: '안드 메시지',
sound: 'default',
priority: 'high',
icon: 'default',
channelId: '500',
},
},
token: target_token,
};
admins
.messaging()
.send(message)
.then(function (response) {
console.log('Successfully sent message: : ', response);
})
.catch(function (err) {
console.log('Error Sending message!!! : ', err);
});
return res.status(200).json({ msg: 'success' });
} catch (err) {
console.log(err);
return res.status(400).json({ msg: 'fail' });
}
};
아이콘이나 기타 설정은 fcm 기타 설정등을 참고하자.
'Front > React Native' 카테고리의 다른 글
[ReactNative] Android Webview KaKaoLink 안드로이드 웹뷰 카카오 공유하기 (0) | 2022.05.17 |
---|---|
[ReactNative] Problems reading data from Binary store in (0) | 2022.05.11 |
[ReactNative] KaKaoLogin Android Key Hash Error Expo -> ReactNative Cli (0) | 2022.01.25 |
[ReactNative] Expo -> ReactNative Cli 전환 및 안드로이드 배포 (0) | 2022.01.19 |
[ReactNative] 푸쉬 알람 설정 Expo-notifications FCM (4) | 2021.12.15 |