Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 플러터
- hongdroid
- Android
- 홍드로이드
- 안드로이드 앱 만들기
- 안드로이드 코딩 기초
- 개발강의
- 코틀린
- android studio 앱 만드는 법
- 안드로이드 기초
- 앱 만들기
- 안드로이드 튜토리얼
- 안드로이드
- 개발자
- Android Java
- 코딩
- java
- 앱 만드는 법
- 자바 튜토리얼
- Android Studio
- android example
- 안드로이드 예제
- 안드로이드 서비스
- 홍드로이드 강의
- flutter
- 자바
- android tutorial
- 안드로이드 네비게이션 메뉴
- 안드로이드 스튜디오
- IOS
Archives
- Today
- Total
홍드로이드의 야매코딩
#19 안드로이드 스튜디오 FCM 푸시알림 예제 [ 홍드로이드 ] 본문
<build.gradle (Project)>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { repositories { google() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:3.1.2' classpath 'com.google.gms:google-services:3.1.0' // NOTE: Do not place your application dependencies here; they belong // in the individual module build.gradle files } } allprojects { repositories { google() jcenter() } } task clean(type: Delete) { delete rootProject.buildDir } | cs |
<build.gradle (Project)>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | apply plugin: 'com.android.application' android { compileSdkVersion 28 defaultConfig { applicationId "com.example.pushtest" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:28.0.0' implementation 'com.android.support.constraint:constraint-layout:1.1.3' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.2' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.2' implementation 'com.google.firebase:firebase-messaging:11.0.4' } apply plugin: 'com.google.gms.google-services' | cs |
<AndroidManifest.xml>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 | <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.pushtest"> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name=".FirebaseMessagingService"> <intent-filter> <action android:name="com.google.firebase.MESSAGING_EVENT"/> </intent-filter> </service> </application> </manifest> | cs |
<FirebaseMessagingService.java>
package com.example.pushtest;
import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.media.RingtoneManager;
import android.net.Uri;
import android.os.Build;
import androidx.annotation.NonNull;
import androidx.core.app.NotificationCompat;
import com.google.firebase.messaging.RemoteMessage;
public class FirebaseMessagingService extends com.google.firebase.messaging.FirebaseMessagingService
{
/**
* 푸시 알림 정보를 받아서 메소드로 넘긴다.
*
* @param remoteMessage
*/
@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage)
{
sendNotification(remoteMessage.getNotification().getTitle(), remoteMessage.getNotification().getBody());
}
/**
* 푸시 알림 정보를 받아서 앱에서 알림을 띄워준다.
*
* @param body
*/
private void sendNotification(String title, String body)
{
Intent intent = new Intent(this, MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_ONE_SHOT);
String chId = "test";
Uri soundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); // 알림 왔을때 사운드.
NotificationCompat.Builder notiBuilder = new NotificationCompat.Builder(this, chId)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(body)
.setAutoCancel(true)
.setSound(soundUri)
.setContentIntent(pendingIntent);
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
/* 안드로이드 오레오 버전 대응 */
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O)
{
String chName = "ch name";
NotificationChannel channel = new NotificationChannel(chId, chName, NotificationManager.IMPORTANCE_HIGH);
manager.createNotificationChannel(channel);
}
manager.notify(0, notiBuilder.build());
}
}
'Android Java' 카테고리의 다른 글
#21 안드로이드 스튜디오 로딩화면 만들기 (Github 오픈소스 다루는 법) 예제 [ 홍드로이드 ] (0) | 2019.06.08 |
---|---|
#20 안드로이드 스튜디오 스피너 (Spinner) 드롭다운 메뉴 예제 [ 홍드로이드 ] (0) | 2019.06.08 |
#18 안드로이드 스튜디오 동영상 녹화 (MediaRecorder) 예제 [ 홍드로이드 ] (2) | 2019.06.02 |
#17 안드로이드 스튜디오 백그라운드 음악 서비스(Service) 예제 [ 홍드로이드 ] (0) | 2019.06.02 |
#16 안드로이드 스튜디오 다이얼로그 팝업창 (Dialog) 예제 [ 홍드로이드 ] (1) | 2019.06.02 |
Comments