2018. 7. 6. 12:28ㆍAndroid
1. Firebase Console에서 프로젝트 생성
2. AndroidStudio
ㅇ Firebase Console에서 프로젝트 생성시 'google-services.json' 파일 다운로드 및 app 하위 경로에 붙여넣기
ㅇ build.gradle(Project 수준)에서 다음 내용 추가
dependencies {
classpath 'com.google.gms:google-services:3.3.1'
}
ㅇ build.gradle(app 수준)에서 다음 내용 추가 후 sync now 선택하여 sync 맞춤
dependencies {
implementation 'com.google.firebase:firebase-messaging:15.0.2'
}
apply plugin: 'com.google.gms.google-services'
ㅇ AndroidManifest.xml에서 permission 및 service 추가
<uses-permission android:name="android.permission.INTERNET"/>
<!-- 서비스 태그 추가 -->
<service
android:name=".MyFCMService">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT"/>
</intent-filter>
</service>
<service
android:name=".MyFIService">
<intent-filter>
<action android:name="com.google.firebase.INSTANCE_ID_EVENT"/>
</intent-filter>
</service>
ㅇ MyFCMService 클래스 생성
public class MyFCMService extends FirebaseMessagingService {
private static final String TAG = MyFirebaseMessagingService.class.getSimpleName();
// 메시지 수신
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Log.i(TAG, "onMessageReceived..");
Map<String, String> data = remoteMessage.getData();
String title = data.get("title");
String messagae = data.get("content");
sendNotification(title, messagae);
}
private void sendNotification(String title, String message) {
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);
Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setLargeIcon(BitmapFactory.decodeResource(getResources(), android.R.drawable.ic_dialog_info))
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle(title)
.setContentText(message)
.setAutoCancel(true)
.setSound(defaultSoundUri)
.setContentIntent(pendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(0 /* ID of notification */, notificationBuilder.build());
}
}
ㅇ MyFIService 클래스 생성
public class MyFIService extends FirebaseInstanceIdService {
private static final String TAG = MyFirebaseInstanceIDService.class.getSimpleName();
// 토큰 재생성
@Override
public void onTokenRefresh() {
// Get updated InstanceID token.
String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "token : " + token);
}
}
* 앱 실행시 FCM SDK에서 Client App 인스턴스용 등록 토큰 생성(MyFIService)
* 토큰이 새로 생성될 때마다 onTokenRefresh() 콜백이 실행되므로 getToken() 호출하면 사용 가능한 현재 등록 토큰에 항상 액세스 가능함.
3. Firebase Console에서 메시지 보내기
- 대상 > 사용자 타겟팅 조건 > 앱선택(com.app.FCMTest)
- 고급 옵션에서 제목 및 맞춤데이터 작성 후 메시지 보내기 클릭
=> onMessageReceived()에서 받는 메시지의 key값으로 보내야 함.
"title" : "fcm테스트"
"content" : "fcm테스트 내용"
'Android' 카테고리의 다른 글
FCM 서버(Spring) 연동 (0) | 2018.07.07 |
---|---|
FCM 푸시알림시 화면깨우기 (0) | 2018.07.07 |
개선된 로딩 화면 (Splash Screen) (0) | 2018.07.02 |
웹뷰(2) (0) | 2018.06.08 |
웹뷰(1) (0) | 2018.06.08 |