Firebase Java API와 Push 알림 통합

Firebase Java API와 Push 알림 통합


Firebase는 현재 시장에서 가장 통용되는 응용 프로그램 개발 플랫폼 중의 하나다.

본문은 최초로 발표되었다: https://quod.ai/post/integrating-push-notifications-with-firebase-java-api
구글은 2014년 최초로 독립회사였던 회사를 인수했고 그 이후 다시는 돌아볼 필요가 없었다.현재 Firebase는 18가지 다른 제품을 가지고 있어 이동과 인터넷 응용의 각종 수요를 만족시킬 수 있다.오늘은 Firebase Cloud Messaging (속칭 FCM) 을 사용하여 안드로이드 프로그램에서 알림을 전송하는 방법을 연구할 것이다.이 자습서는 Android 프로그래밍 및 Firebase에 대한 기본 지식을 갖추고 있다고 가정합니다.너는 Firebase Console에 가서 프로젝트를 어떻게 설정하는지 배울 수 있다. 

몰래 엿보다


다음은 우리가 구축할 프로그램의 작은 미리보기입니다.우리는 두 개의 응용 프로그램이 있는데, 하나는 푸시 알림을 보내는 데 사용되고, 다른 하나는 푸시 알림을 받는 데 사용된다.발송자는 특정 주제에 통지를 보내고 이 특정 주제의 모든 구독자는 통지를 받을 것이다.이것도 메시지 전달에서 유행하는pub-sub 디자인 모델의 실현이다. 

발송자는 두 개의 필드가 있는데, 메시지의 제목과 본문, 그리고 메시지를 주제에 보내는 단추가 있다.우리는 새로운 혜택이 있을 때마다 사용자에게 알릴 수 있는 '거래' 라는 주제를 만들었습니다.

수신 프로그램은 템플릿 안드로이드 코드로 만들어졌지만, 이 테마에 탐지기가 구독을 시켜서, 이 테마에 메시지를 보낼 때마다 알림을 받을 수 있도록 합니다. 

보낸 사람 코드


먼저 발송자 코드를 봅시다.이 부분은 좀 복잡하다.시작하기 전에 뭔가가 필요해.먼저 Firebase 컨트롤러로 가서 '프로젝트 설정' 의 '클라우드 메시지' 옵션에서 서버 키를 가져옵니다.이것은 요청을 검증하고 요청의 제목에 추가해야 합니다. 

상수 파일


 public class Constants {
    public static final String SERVER_KEY = "ENTER YOUR SERVER KEY HERE";
    public static final String BASE_URL = "https://fcm.googleapis.com";
    public static final String CONTENT_TYPE = "application/json";
}
Constants.java의 컨텍스트에서 보기Quod AI
1-5 행: Constants라는 클래스를 만들고 모든 상수 값을 클래스에 저장합니다.Firebase 클라우드 메시지에 대한 서버 키, 컨텐츠 유형 및 기본 URL이 있습니다.Firebase 콘솔의 값으로 서버 키를 대체하는 것을 기억하십시오.

모범반


public class Notification {
    private String title;
    private String body;

    public Notification(String title, String body) {
        this.title = title;
        this.body = body;
    }
    public String getTitle() {
        return title;
    }
    public void setTitle(String title) {
        this.title = title;
    }
    public String getBody() {
        return body;
    }
    public void setBody(String body) {
        this.body = body;
    }
}
Notification.java의 컨텍스트에서 보기Quod AI
1-21 행: 이제 모든 모델 클래스를 생성합니다.알림 데이터와 응답에 필요한 것 중 하나입니다.다음에 제시된 알림 클래스는 필드, 제목, 주체, 구조 함수와 Getter/setter를 포함합니다.이것은 매우 간단한 자바 코드다. 
public class PushNotification {
    private Notification notification;
    private String to;

    public PushNotification(Notification notification, String to) {
        this.notification = notification;
        this.to = to;
    }
    public PushNotification(Notification data) {
        this.notification = data;
    }
    public Notification getNotification() {
        return notification;
    }
    public void setNotification(Notification data) {
        this.notification = data;
    }
    public String getTo() {
        return to;
    }
    public void setTo(String recipient) {
        this.to = recipient;
    }
}
PushNotification.java의 컨텍스트에서 보기Quod AI
1-24 줄: 다음에 우리는 PushNotification 클래스가 있는데 이것은 우리가 주제로 전송하는 실제 클래스를 사용할 것이다.여기에 클래스 알림 필드와 문자열 필드 'to' 가 있습니다. 메시지를 보내는 수신자나 테마를 표시합니다.

이제 API 호출을 위한 인터페이스를 생성합니다.Android의 개조 라이브러리를 사용하여 API 호출을 수행합니다.Retrofit는 경량급이고 사용하기 쉬운 HTTP 클라이언트로 안드로이드와 자바에 적용된다.그것을 사용하기 시작하는 데 필요한 것은 구축에 의존항만 추가하는 것입니다.그레델 서류.도서관에 대해 더 잘 알 수 있도록 위에서 제시한 공식 사이트에서 더 많은 정보를 읽을 수 있다.응용 프로그램에서 라이브러리를 사용할 때 문서를 읽는 것은 항상 좋은 방법이다. 
Notification API 인터페이스를 자세히 살펴보겠습니다.‍
public interface NotificationAPI {
    @Headers({"Authorization: key=" + Constants.SERVER_KEY, "Content-Type:" + Constants.CONTENT_TYPE})
    @POST("fcm/send")
    Call postNotification(@Body PushNotification data);
}
컨텍스트 보기Quod AI
1-5줄: 우리 한 줄씩 가자.첫 번째 줄 @Headers는 기본 헤더를 덮어쓰고 이전에 얻은 서버 키를 추가하고 내용 형식을 응용 프로그램/json으로 설정합니다.
주석은 이것이post 요청이고 괄호 안의 값이 단점을 표시합니다.그리고 주체 중의 PushNotiFaction 대상을 서버에 전달할 때 실제 방법 이름을 얻을 것입니다. 이 이름은 응답 대상을 되돌려줍니다. (정의는 상기 참조)

이것들을 모두 주요 활동에 두다


public static final String TOPIC = "/topics/deals";


Button sendButton = findViewById(R.id.send);
EditText titleText = findViewById(R.id.title);
EditText contentText = findViewById(R.id.content);


sendButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        String title = titleText.getText().toString();
        String content = contentText.getText().toString();

        if(!title.isEmpty() && !content.isEmpty()){
            Notification message = new Notification(title, content);
            PushNotification data = new PushNotification(message, TOPIC);
            Retrofit retrofit = new Retrofit.Builder()
                    .baseUrl(Constants.BASE_URL)
                    .addConverterFactory(GsonConverterFactory.create())
                    .build();

            NotificationAPI apiService =
                    retrofit.create(NotificationAPI.class);
            Call call = apiService.postNotification(data);
            call.enqueue(new Callback() {
                @Override
                public void onResponse(Call call, retrofit2.Response response) {
                    if (!response.isSuccessful()) {
                        Log.d(TAG, String.valueOf(response.code()));
                        return;
                    }
                    titleText.setText("");
                    contentText.setText("");
                    Toast.makeText(MainActivity.this, "Message Pushed", Toast.LENGTH_SHORT).show();
                }
                @Override
                public void onFailure(Call call, Throwable t) {
                    Log.d(TAG, t.getMessage());
MainActivity.java의 컨텍스트에서 보기Quod AI
첫 번째 줄: 코드에'deals'라는 주제를 만들었는데 그 앞에'topics'라는 단어를 붙이는 것은 좋은 방법으로 여겨진다. 
3-5줄: 프로그램에서 사용할 수 있도록 모든 텍스트 필드와 발송 단추를 검색해야 합니다.XML 디자인 코드에 id가 언급되었는데, 말 그대로 findViewById는 id에 따라 해당하는 활동에서 구성 요소를 가져오는 데 사용됩니다
7-8 줄: 이 listener에 프로그램에 필요한 나머지 논리를 쓰기 위해 단추에 onClickListener를 설정합니다. 
9-12 줄: 단추를 누르면 텍스트 필드의 값을 검색합니다.그리고 그것으로 우리가 주제에 보내야 할 대상을 구성한다. 
15-18 행: 다음은 API 호출을 위한 개조 인스턴스를 작성합니다.Google은 상수 파일에서 기본 URL을 설정하고 변환기 공장을 설정합니다. (이 예는 Gson) JSON을 자바 POJO로 변환하고, 반대로도 마찬가지입니다. 
20-21 줄: 그리고 Notifications API 서비스의 실례를 만들어서 우리가 방금 만든 리메이크 실례에 전달합니다.
22-36 줄: API 호출을 개조할 때 우리는 응답을 받은 후에 다른 방식으로 사용자에게 줄 서기 방법을 사용할 수 있다.우리의 경우, 우리는 잔을 들어 이 메시지가 이미 전달되었다고 축하할 것이다.만약 실패한다면 축배사는 예외를 나타낼 것이다.

‍수신 코드


FirebaseMessaging.getInstance().subscribeToTopic(TOPIC)
.addOnCompleteListener(new OnCompleteListener() {
    @Override
    public void onComplete(@NonNull Task task) {
        String msg = ("Subscribed");
        if (!task.isSuccessful()) {
            msg = "Couldn't subscribe to topic";
        }
        Log.d(TAG, msg);
        Toast.makeText(MainActivity.this, msg, Toast.LENGTH_SHORT).show();
    }
});
MainActivity (Receiver).java의 컨텍스트에서 보기Quod AI
1-12 줄: 수신기는 기본적으로 빈 안드로이드 프로그램으로 테마를 구독합니다.이것은 우리가 언급한 주제를 감청합니다. 새로운 메시지가 나오면 탐지기를 터치하고 유효 부하로 알림을 생성합니다.MainActivity에서 우리가 해야 할 유일한 일은 우리가 이전에 만든 테마를 구독하는 것이다.만일 모든 것이 성공한다면, 우리는 "구독했습니다"라는 메시지만 보일 것입니다. 그렇지 않으면 "테마에 구독할 수 없습니다."

서비스 등급


    public void onMessageReceived(RemoteMessage remoteMessage) {
        super.onMessageReceived(remoteMessage);
        if (remoteMessage.getData().size() > 0) {
            Log.d(TAG, "Message data payload: " + remoteMessage.getNotification().getBody());
        }
        if (remoteMessage.getNotification() != null) {
            Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody());
        }
        Notification notification = new NotificationCompat.Builder(this)
                .setContentTitle(remoteMessage.getNotification().getTitle())
                .setContentText(remoteMessage.getNotification().getBody())
                .setSmallIcon(R.mipmap.ic_launcher)
                .build();
        NotificationManagerCompat manager = NotificationManagerCompat.from(getApplicationContext());
        manager.notify(123, notification);
MyFirebaseMessagingService.java의 컨텍스트에서 보기Quod AI
네 번째 줄: 현재 서비스 클래스를 만듭니다.FirebaseMessaging Service 클래스를 확장하는 클래스입니다.알림을 터치하려면 onMessageReceived 방법을 다시 써야 합니다. 
6-10 줄: 메시지 크기가 0보다 크고 알림 필드가 비어 있지 않으면 새 알림을 만듭니다.탐지기에서 캡처한 메시지에서 알림 제목과 내용을 검색합니다. 
12-16 줄: 알림에서도 사용자 정의 아이콘을 사용할 수 있지만 알림에서도 프로그램 아이콘 자체를 사용합니다. 
17-18 줄: 마지막으로 Notification Manager Compat을 사용하여 프로그램의 상하문을 가져오고 알림을 화면으로 전송합니다.

큰일 좀 해!


이것은 Android에서 알림 푸시 기능의 시작일 뿐입니다.Firebase 클라우드 메시지 전달은 입문하기 쉬우나, 방금 보신 복잡한 기능 (예를 들어 술집 구독 메시지 전달) 은 자주 무시됩니다.식당 근처에서 사용자에게 푸시 알림을 보내 당일의 거래 상황을 알리는 앱을 만드는 것을 상상해 보자.가능성은 무궁하다! 

GitHub 링크


https://github.com/QuodAI/tutorial-push-notifications-with-firebase-api-v2

좋은 웹페이지 즐겨찾기