안녕하세요
기존에 쓴 글들이 2년이 넘어간 관계로 상당히 구버전이 되었습니다.
이번에 작성할 글은 예전에 만든 소스코드의 버전을 올리는 내용입니다.
먼저 안드로이드 SDK는 API Level 28을 깔아줍니다. (Android 9.0 Pie)
target SDK를 26( Android 8.0)으로 잡을것이기때문에 26도 깔아줍니다.
원글 : fcm push notification example / (fcm) 안드로이드 푸시 알림 (2)
1. project level의 build.gradle 파일에 google-service를 추가합니다.
dependencies {classpath 'com.android.tools.build:gradle:2.1.0'//classpath 'com.google.gms:google-services:3.0.0'classpath 'com.google.gms:google-services:3.0.0'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
-> gradle 버전 3.3.2, google-services 버전 4.2.0
dependencies {classpath 'com.android.tools.build:gradle:3.3.2'//classpath 'com.google.gms:google-services:3.0.0'classpath 'com.google.gms:google-services:4.2.0'// NOTE: Do not place your application dependencies here; they belong// in the individual module build.gradle files}
2. app level의 build.gradle 파일에 firebase-messaging을 추가합니다. 그리고 google-service plugin을 apply 해줍니다.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.android.support:appcompat-v7:23.4.0'
compile 'com.google.firebase:firebase-messaging:9.0.2'
}
apply plugin: 'com.google.gms.google-services'
-> 저의 경우 SDK 버전은 compileSdkVersion은 26 minSdkVersion은 21, targetSdkVersion은 26으로 설정하였습니다.
Appcompat = 23.4.0에서 26.0.1로 변경, firebase-messaging은 9.0.2에서 17.4.0으로 변경하였습니다.
apply plugin: 'com.android.application'
android {
compileSdkVersion 26
defaultConfig {
applicationId ""
minSdkVersion 21
targetSdkVersion 26
versionCode 10
versionName "1.1.0"
}
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:26.1.0'
implementation 'com.google.firebase:firebase-messaging:17.4.0'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
}
apply plugin: 'com.google.gms.google-services'
String token = FirebaseInstanceId.getInstance().getToken();
위와같이 .getToken()을 이용하여 가져오는 방식이 deprecated 되었습니다.
현재는 아래와 같이 받아 올 수 있습니다.
private static String deviceToken;
FirebaseInstanceId.getInstance().getInstanceId().addOnSuccessListener( new OnSuccessListener<InstanceIdResult>() {
@Override
public void onSuccess(InstanceIdResult instanceIdResult) {
deviceToken = instanceIdResult.getToken();
}
});
기존처럼 getToken을 사용해 바로 받을수가 없고 successListner를 통해 콜백 형식으로 얻어오기 때문에 앱 구동시 코드를 실행하여 전역변수에 담아놓고 사용중입니다.
버전을 올리면서 과정을 기록해 놓지 않아서 생각나는대로 적는바람에 중간과정이 생략되었을 수 있습니다.