> Java > java지도 시간 > 본문

Android 푸시 알림 단계별 가이드

Linda Hamilton
풀어 주다: 2024-11-18 08:46:02
원래의
992명이 탐색했습니다.

푸시 알림은 모바일 앱의 사용자 참여 및 유지에 중요한 역할을 하며 사용자에게 최신 정보를 제공하고 구매로 이어지는 긴박감을 조성합니다. 그리고 Android에서는 앱 서버와 사용자의 Android 기기 사이에서 중개자 역할을 하는 FCM(Firebase Cloud Messaging) 알림 서비스의 추가 이점을 얻을 수 있습니다. 앱이 활성화되어 있지 않거나 사용자가 기기에서 다른 앱을 사용하고 있는 경우에도 푸시 알림을 전달하는 데 도움이 됩니다.

Firebase 클라우드 메시징(FCM)은 강력한 교차 메시징 시스템 덕분에 사용자에게 데이터 메시지와 알림을 보내는 데 사용됩니다. iOS, 웹 및 Android 플랫폼은 모두 FCM에서 지원됩니다. FCM 푸시 알림을 사용하면 데이터 페이로드가 최대 4kb인 메시지를 보낼 수 있습니다.

이 기사에서는 푸시 알림을 Android 앱에 통합하는 방법을 단계별로 살펴보고 구현의 중요한 측면에 대해 논의합니다. 또한 사용자 참여를 단순화하고 증폭시킬 수 있는 여러 제품과 도구를 소개할 예정입니다.

Android 푸시 알림 이해

모바일 푸시 알림은 사용자 참여, 고객 유지 및 애플리케이션의 전반적인 사용자 경험을 개선하는 데 도움이 됩니다. 푸시 알림을 올바르게 사용하면 다양한 비즈니스 영역에서 모바일 앱의 효율성을 크게 높일 수 있습니다.

푸시 알림은 다음을 포함하여 Android 앱에서 다양한 사용 사례와 목적으로 사용될 수 있습니다.

i) 사용자의 온라인 예약 또는 일정 상태 업데이트

ii) 사용자가 온라인 주문한 내용에 대한 설명과 업데이트를 제공합니다.

iii) 사용자에게 백엔드 변경 사항을 알리고 패키지 추적을 돕습니다.

iv) 앱에 연결된 이벤트에 대한 기대감을 조성하고 사용자에게 새로운 제안, 프로모션 및 기회를 소개합니다.

v) 놀리는 메시지를 통해 사용자가 새로운 앱 기능을 사용해 보도록 독려하고 서버 업데이트 및 기타 백엔드 변경 사항을 알려줍니다.

Android 애플리케이션의 푸시 알림 구현 방식

전제 조건

Android 앱 FCM에서 푸시 알림을 성공적으로 구현하려면 다음 도구와 서비스가 필요합니다.

i) Android Studio – Android 개발에 사용되는 IDE입니다.

ii) 기본 지식 및 이해 – Android 프로젝트 개발 및 구조, 매니페스트 파일 구성에 대한 기본적인 이해가 필요합니다.

iii) Firebase 계정 – 프로젝트 설정을 생성하고 관리하려면 Firebase 계정이 있어야 합니다.

iv) 인터넷 가용성 – 통합 테스트 및 Firebase 설정에는 인터넷 연결이 필요합니다.

1단계. Firebase 프로젝트 설정

Firebase 콘솔을 방문하세요.

이름을 지정하고 계속을 클릭하여 프로젝트를 만듭니다.

Android Push Notifications Step by Step Guide

추가 구성을 위해 Google Analytics 서비스를 활성화 또는 비활성화하여 앱에 대한 데이터 분석을 얻을 수 있습니다.

설정을 완료하려면 프로젝트 설정을 검토해야 합니다. 그러면 프로젝트를 만들 수 있습니다.

프로젝트를 생성한 후 푸시 알림 구현을 위한 추가 프로젝트 구성을 수행해야 합니다.

프로젝트 대시보드에 앱 등록

Android 앱을 추가하려면 대시보드에서 Android 아이콘을 클릭해야 합니다. 다음으로 Android 패키지 이름을 입력합니다. 이 패키지 이름은 프로젝트의 패키지 이름(예: com.app.demoapp)과 동일해야 합니다.

Android Push Notifications Step by Step Guide

콘솔에서 앱을 식별하기 위해 앱의 닉네임을 입력할 수도 있습니다.

앱에 SHA-1 키를 추가하세요. 터미널에서 SHA-1 키를 생성하려면 다음 명령을 사용해야 합니다. 이제 SHA-1 키를 복사하여 Firebase 콘솔에 붙여넣습니다.

./gradlew signingReport

로그인 후 복사
로그인 후 복사
로그인 후 복사

마지막으로 '앱 등록'을 클릭하여 구성을 완료합니다.

Android Push Notifications Step by Step Guide

Google 서비스 설정

앱 등록이 완료되면 google-services.json 파일을 다운로드하여 컴퓨터에 저장할 수 있습니다.

이제 Android 프로젝트에 google-services.json을 추가하고 Android 프로젝트의 앱 디렉터리에 파일을 추가해야 합니다.

MyApp/
├── app/
│ ├── src/
│ ├── build.gradle
│ ├── google-services.json
├── build.gradle
├── settings.gradle

로그인 후 복사
로그인 후 복사
로그인 후 복사

Firebase SDK 추가

다음으로 프로젝트에 Firebase SDK를 추가하고 build.gradle에서 Google 서비스 클래스 경로를 추가하세요.

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        // Add this line
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

app/build.gradle에서 다음 종속성을 추가합니다.-

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    // ...
}

dependencies {
    // Add these lines
    implementation platform('com.google.firebase:firebase-bom:29.0.4')
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-messaging'
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

이 단계를 마친 후 Android Studio에서 '지금 동기화'를 클릭하여 프로젝트를 Firebase와 동기화할 수 있습니다.

2단계. Android 프로젝트 구성

프로젝트 수준 build.gradle

프로젝트 수준 build.gradle 열기: Android 프로젝트의 루트 디렉터리로 이동하여 build.gradle 파일을 찾습니다.

google() 및 mavenCentral() 저장소가 저장소 섹션에 포함되어 있는지 확인하세요.

buildscript {
    repositories {
        // Check that you have these lines
        google()
        mavenCentral()
    }
    dependencies {
        // Add this line
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

allprojects {
    repositories {
        // Check that you have these lines
        google()
        mavenCentral()
    }
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

build.gradle을 변경하세요.

프로젝트 앱 디렉터리에서 build.gradle 파일을 찾아 찾은 다음 파일 끝에 google-services 플러그인을 추가하고 종속성 섹션에 Firebase 및 Firebase 메시징 종속성을 추가하세요.

./gradlew signingReport

로그인 후 복사
로그인 후 복사
로그인 후 복사

이 단계를 완료하면 푸시 알림을 위한 Firebase 메시징을 포함하여 프로젝트가 Firebase 종속성으로 구성됩니다. 이제 Firebase 메시징 서비스 설정 및 앱 알림 처리를 진행하겠습니다.

3단계. FCM 구현

FCM 메시지를 처리하는 서비스 추가

FirebaseMessagingService를 확장하는 MyMessagingService라는 새 클래스를 만듭니다.

앱이 포그라운드 상태에 있을 때 들어오는 메시지를 처리하려면 onMessageReceived 메서드를 재정의해야 합니다. 그런 다음 알림을 처리하고 선택적으로 사용자에게 표시하는 논리를 구현합니다.

MyApp/
├── app/
│ ├── src/
│ ├── build.gradle
│ ├── google-services.json
├── build.gradle
├── settings.gradle

로그인 후 복사
로그인 후 복사
로그인 후 복사

AndroidManifest.xml 파일에 등록

프로젝트에서 AndroidManifest.xml 파일을 엽니다.

이제 FCM 메시지를 처리하려면 매니페스트에 MyMessagingService를 등록해야 합니다.

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        // Add this line
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

4단계: FCM 등록 토큰 받기

푸시 알림을 받으려면 앱이 FCM 등록 토큰을 얻어야 합니다. 이 토큰은 기기의 앱 인스턴스를 고유하게 식별합니다.

장치 토큰을 가져오는 코드 예

FirebaseMessagingService 또는 앱의 다른 적절한 위치에서 FCM 등록 토큰을 가져올 수 있습니다. FirebaseMessagingService에서 이를 수행하는 방법을 살펴보겠습니다.

MyMessagingService 업데이트:

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    // ...
}

dependencies {
    // Add these lines
    implementation platform('com.google.firebase:firebase-bom:29.0.4')
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-messaging'
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

활동이나 조각에서 토큰을 가져와 필요에 따라 저장하거나 사용할 수 있습니다.

buildscript {
    repositories {
        // Check that you have these lines
        google()
        mavenCentral()
    }
    dependencies {
        // Add this line
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

allprojects {
    repositories {
        // Check that you have these lines
        google()
        mavenCentral()
    }
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

이러한 방법을 사용하면 Android 앱에서 FCM 등록 토큰을 얻을 수 있습니다. 토큰은 FirebaseMessagingService나 활동 또는 조각에서 가져올 수 있습니다. 이 토큰은 특정 장치에 타겟 푸시 알림을 보내는 데 중요합니다.

5단계: 푸시 알림 보내기

서버에서 알림을 보내려면 FCM API에 POST 요청을 해야 합니다.

서버 키가 필요합니다

  • Firebase 콘솔 → 프로젝트 설정 → '프로젝트 개요' → '클라우드 메시징'에서.
  • “프로젝트 자격 증명”에서 서버 키를 찾을 수 있습니다.

cURL 요청: 이 cURL 명령은 알림을 보내는 데 사용됩니다. 실제 서버 키와 대상 장치의 FCM 토큰으로.

./gradlew signingReport

로그인 후 복사
로그인 후 복사
로그인 후 복사
  • https://fcm.googleapis.com/fcm/send API 엔드포인트
  • H "Authorization: key=": 서버 키가 포함된 인증 헤더입니다.
  • H "Content-Type: application/json": 콘텐츠 유형 헤더.
  • d '{ ... }': 알림과 데이터가 포함된 JSON 페이로드입니다.

고급 주제

데이터 메시지 처리

데이터 메시지는 사용자 정의 키-값 쌍을 전달할 수 있는 메시지 유형이며 알림 메시지와 다르게 처리됩니다. 앱이 포그라운드에 있는지, 백그라운드에 있는지에 관계없이 FirebaseMessagingService 의 onMessageReceived 메서드를 통해 데이터 메시지가 수신됩니다.

데이터 메시지 처리의 예

MyMessagingService 업데이트

MyApp/
├── app/
│ ├── src/
│ ├── build.gradle
│ ├── google-services.json
├── build.gradle
├── settings.gradle

로그인 후 복사
로그인 후 복사
로그인 후 복사

알림 채널 관리

Android 8.0(API 레벨 26)부터는 모든 알림을 채널에 할당해야 합니다. 이를 통해 사용자는 각 채널의 알림 설정을 제어할 수 있습니다.

알림 채널 생성 예

알림 채널 설정 방법 만들기:

buildscript {
    repositories {
        google()
        mavenCentral()
    }
    dependencies {
        // Add this line
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

MainActivity 또는 애플리케이션 클래스에서 이 메서드를 호출하세요.

apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'

android {
    // ...
}

dependencies {
    // Add these lines
    implementation platform('com.google.firebase:firebase-bom:29.0.4')
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'com.google.firebase:firebase-messaging'
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

또는 NotificationUtils.createNotificationChannel(this)을 호출할 수도 있습니다. 애플리케이션 클래스가 있는 경우:

buildscript {
    repositories {
        // Check that you have these lines
        google()
        mavenCentral()
    }
    dependencies {
        // Add this line
        classpath 'com.google.gms:google-services:4.3.10'
    }
}

allprojects {
    repositories {
        // Check that you have these lines
        google()
        mavenCentral()
    }
}

로그인 후 복사
로그인 후 복사
로그인 후 복사

채널 ID를 사용하도록 알림 빌더 업데이트:

apply plugin: 'com.android.application'

android {
    compileSdkVersion 33
    defaultConfig {
        applicationId "com.example.myandroidapp"
        minSdkVersion 21
        targetSdkVersion 33
        versionCode 1
        versionName "1.0"

        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation 'androidx.appcompat:appcompat:1.6.1'
    implementation 'com.google.android.material:material:1.8.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
    implementation 'androidx.legacy:legacy-support-v4:1.0.0'
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.5'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'

    // Add Firebase BOM
    implementation platform('com.google.firebase:firebase-bom:29.0.4')
    // Add Firebase Messaging dependency
    implementation 'com.google.firebase:firebase-messaging'
}

// Add this line at the bottom of the file
apply plugin: 'com.google.gms.google-services'

로그인 후 복사

푸시 알림 테스트

푸시 알림이 구현되면 올바르게 구현되었는지 테스트해야 합니다.

Android Studio에서는 logcat을 열고 보기 > 도구 창 > 로그캣.

FirebaseMessagingService 클래스에서 사용한 태그를 사용하여 logcat 출력을 필터링할 수도 있습니다. 애플리케이션은 기기에서 또는 에뮬레이터를 통해 실행되고 있어야 합니다.

알림이 수신되면 다음과 같이 logcat에서 데이터를 볼 수 있습니다.

import android.app.NotificationChannel;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.os.Build;
import androidx.core.app.NotificationCompat;
import com.google.firebase.messaging.FirebaseMessagingService;
import com.google.firebase.messaging.RemoteMessage;

public class MyMessagingService extends FirebaseMessagingService {

    @Override
    public void onMessageReceived(RemoteMessage remoteMessage) {
        // Handle the received message
        if (remoteMessage.getNotification() != null) {
            // Get the message body
            String messageBody = remoteMessage.getNotification().getBody();
            // Send a notification
            sendNotification(messageBody);
        }
    }

    private void sendNotification(String messageBody) {
        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 channelId = getString(R.string.default_notification_channel_id);
        NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this, channelId)
                .setSmallIcon(R.drawable.ic_notification)
                .setContentTitle(getString(R.string.app_name))
                .setContentText(messageBody)
                .setAutoCancel(true)
                .setContentIntent(pendingIntent);

        NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            NotificationChannel channel = new NotificationChannel(channelId, "Channel human readable title", NotificationManager.IMPORTANCE_DEFAULT);
            notificationManager.createNotificationChannel(channel);
        }

        notificationManager.notify(0, notificationBuilder.build());
    }
}

로그인 후 복사

메시지 데이터는 다음과 같이 볼 수 있습니다.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.myandroidapp">

    <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">

        <!-- Add this service -->
        <service
            android:name=".MyMessagingService"
            android:exported="false">
            <intent-filter>
                <action android:name="com.google.firebase.MESSAGING_EVENT" />
            </intent-filter>
        </service>

        <!-- Other activities and services -->
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
로그인 후 복사

결론

이 기사에서는 푸시 알림과 구현에 대한 단계별 접근 방식에 대해 알아봤습니다. Firebase 콘솔에서 프로젝트를 설정하는 방법과 Firebase 프로젝트 설정에서 필수 구성을 완료하여 Android 사용자에게 Android 알림을 보내는 방법을 배웠습니다.

Firebase 프로젝트를 설정하고 google-services.json 파일을 다운로드하여 시작해야 합니다. 그런 다음 이 파일 앱의 디렉터리를 배치하고 Firebase 종속성을 포함하도록 build.gradle 파일을 수정해야 합니다.

그런 다음 수신 메시지를 처리할 클래스를 생성하고 이 서비스 클래스를 AndroidManifest.xml에 등록해야 합니다. 매니페스트 파일에 서비스를 추가한 후 앱을 고유하게 식별하는 데 사용되는 FCM 토큰을 가져와야 타겟 기기에 알림이 전송될 수 있습니다.

Firebase 콘솔에서 메시지를 보내고 Android Studio의 logcat을 사용하여 전달을 확인함으로써 알림을 테스트할 수 있습니다. 서버 측 알림을 활성화하려면 Firebase 서버 키 및 기기의 FCM 토큰과 함께 cURL 요청을 사용하세요.

최신 Android 버전과의 호환성을 유지하려면 'FirebaseMessagingService'에서 데이터 메시지를 처리하고 정교한 구성을 위한 알림 채널을 관리해야 합니다.

관련 업데이트와 맞춤형 정보를 제공하고 사용자 유지율과 전환율을 높일 수 있는 푸시 알림은 사용자 참여를 장려하는 데 매우 중요합니다.

자세한 정보와 자세한 지침은 공식 Firebase 및 Android SDK 문서를 읽어보세요. 이러한 웹사이트는 애플리케이션에 푸시 알림을 통합하기 위한 철저한 지침과 업계 모범 사례를 제공합니다.

위 내용은 Android 푸시 알림 단계별 가이드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:dev.to
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿