728x90
반응형
기존 푸시알람과는 달리 안드로이드 8.0이상부터는 채널이란 개념이 추가됩니다.
채널이란건 한번 그 채널로 푸시를 띄웠다면 앱을 지우지 않는 이상 그 채널이 삭제되진 않습니다.
private void Success_Notification(String messageBody, String messageTitle) {
int notifyID = 2;
if(android.os.Build.VERSION.SDK_INT > 25) {
//푸쉬알림음설정//
AudioAttributes audioAttributes = new AudioAttributes.Builder()
.setContentType(AudioAttributes.CONTENT_TYPE_SONIFICATION)
.setUsage(AudioAttributes.USAGE_NOTIFICATION_RINGTONE)
.build();
//푸쉬알림음설정//
//푸시를 클릭했을때 이동//
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 , intent, PendingIntent.FLAG_MUTABLE | PendingIntent.FLAG_UPDATE_CURRENT);
//푸시를 클릭했을때 이동//
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
NotificationChannel mChannel = new NotificationChannel(Noti_ID, name, NotificationManager.IMPORTANCE_HIGH);
mChannel.setDescription(description);
mChannel.enableLights(true);
mChannel.enableVibration(true);
mChannel.setSound(uri,audioAttributes);
mNotificationManager.createNotificationChannel(mChannel);
mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
try {
Notification notification = new Notification.Builder(MyFBMessageService.this,Noti_ID)
.setContentTitle(URLDecoder.decode(messageTitle, "UTF-8"))
.setContentText(URLDecoder.decode(messageBody, "UTF-8"))
.setSmallIcon(R.drawable.icon)
.setContentIntent(pendingIntent)
.setAutoCancel(true)
.build();
mNotificationManager.notify(notifyID, notification);
}
catch (Exception e) {
e.printStackTrace();
}
}
else{
NotificationManager notificationManager;
PendingIntent intent2 = PendingIntent.getActivity(this, 0, new Intent(getApplicationContext(), MainActivity.class), PendingIntent.FLAG_UPDATE_CURRENT);
Notification.Builder builder = null;
try {
builder = new Notification.Builder(getApplicationContext())
.setSmallIcon(R.drawable.icon)
.setDefaults(Notification.BADGE_ICON_NONE)
.setContentTitle(URLDecoder.decode(messageTitle, "UTF-8"))
.setContentText(URLDecoder.decode(messageBody, "UTF-8"))
.setAutoCancel(true)
.setSound(uri)
.setPriority(Notification.PRIORITY_HIGH)
.setContentIntent(intent2);
}
catch (Exception e) {
e.printStackTrace();
}
notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(notifyID, builder.build());
}
}
위에 if문 같은경우는 오레오버전(8.0) 이상의 버전입니다.
아래는 기존에 저희가 쓰던 8.0 아래의 버전에서 사용하는 푸시입니다.
저는 알림음도 따로 설정을 해주었는데요.
Uri uri = Uri.parse("android.resource://패키지네임/" + R.raw.mp3파일명);
이런식으로 적어주시면 raw안에 있는 mp3파일을 알림음으로 재생할수있습니다.
PendingIntent같은 경우는 해당 푸시를 클릭했을때 메인클래스로 바로 이동하겠다는 intent입니다.
채널관련된 변수는
String Noti_ID = "Order_channel";
CharSequence name = "Order_push";
String description = "Order";
이런식으로 정의해줬는데요 이름은 여러분들이 마음껏 지어보도록 하세요.
여기서 주의해야할 사항은 지금 Order_channel, Order_push, Order 라는 채널에는
예를들어 test.mp3 라는 파일로 알림음을 재생한다고 가정하면,
추후에 알림을을 변경한다고해도 바뀌지않습니다.
앱을 삭제해야지만 바뀔것입니다.
그러기위해선 다른이름의 채널을 만들어주면 생성이 가능합니다.
오레오버전부터는 그 전버전과는 달리 setSound 인자값으로 오디오메니저가 하나 더 추가됩니다.
이렇게 오레오버전(8.0) 이상의 버전부터 울리는 푸시의 방법에 대해서 알아봤습니다.
728x90
반응형
'Android' 카테고리의 다른 글
WebView 현재 페이지가 로딩이 됐는지 알아보는 방법. (0) | 2020.04.14 |
---|---|
안드로이드 공유하기 기능으로 해당 앱 실행 후 원하는 페이지로 이동. (4) | 2020.03.31 |
안드로이드 URL주소로 어플 실행하기. (7) | 2020.03.18 |
안드로이드 앱 배포시 다른사용자에게서 발생한 에러로그 추적(크래시리틱스/Crashlytics) (0) | 2020.03.18 |
안드로이드 페이스북,인스타그램,블로그 페이지 띄우기. (0) | 2020.03.06 |
댓글