2018. 7. 7. 17:55ㆍAndroid
/**
* android 8.0 oreo의 경우 알림채널 설정해야 알림이 옴
* - targetSDKVersion이 26버전보다 아래라면 문제없이 알림이 옴(version < 26)
* - 채널은 한번만 만들면 되기때문에 Notification이 올때마다 만들어줄 필요가 없다.
* Application Class에서 만들어 줘 되고 SharedPreference를 이용해서 한번 만든적이 있다면
* 그다음부터는 만들지 않도록 해주어도 된다.
*/
private void sendNotification(String title, String message) {
int messageId = Integer.parseInt(PushUtils.getId());
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent,
PendingIntent.FLAG_CANCEL_CURRENT);
String channelId = "FCMTestId";
CharSequence channelName = "FCTMTestName";
String description = "FCMTest";
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // O = 26, O_MR1 = 27
NotificationChannel notificationChannel = new NotificationChannel(channelId, channelName, NotificationManager.IMPORTANCE_DEFAULT);
notificationChannel.setDescription(description);
notificationChannel.enableLights(true);
notificationChannel.enableVibration(true);
notificationChannel.setVibrationPattern(new long[]{100,200,100,200});
notificationChannel.setLockscreenVisibility(Notification.VISIBILITY_PRIVATE);
notificationManager.createNotificationChannel(notificationChannel);
}
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_dialog_info))
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true) /*클릭시 해당 Notification만 제거*/
.setSound(defaultSoundUri)
.setPriority(Notification.PRIORITY_MAX) /*Priority 높여 알림 볼 수 있게 함*/
.setContentIntent(pendingIntent);
notificationManager.notify(messageId /* ID of notification */, notificationBuilder.build());
}
'Android' 카테고리의 다른 글
안드로이드 9.0(파이) (0) | 2018.08.10 |
---|---|
원형 프로그레스바 (0) | 2018.07.12 |
FCM 서버(Spring) 연동 (0) | 2018.07.07 |
FCM 푸시알림시 화면깨우기 (0) | 2018.07.07 |
FCM(Firebase Cloud Messaging) (0) | 2018.07.06 |