전문가: Kotlin을 사용하는 Android의 Courier App MVVM Jetpack(HMS 푸시 키트) - Part-2

6325 단어
개요
이 기사에서는 HMS Account 및 AuthService Kit와 같은 HMS Core 키트를 통합할 Kotlin을 사용하여 Courier Android 애플리케이션을 만듭니다.
이 시리즈의 1부에서 HMS 계정 및 AuthService 키트를 통합했습니다. 아래 링크로 이동해주세요-
//1부 링크를 추가해주세요.
앱은 DataBinding, AndroidViewModel, Observer, LiveData 등과 같은 Jetpack 구성 요소를 사용하여 Android MVVM 클린 아키텍처를 사용합니다.
이 기사에서는 Observable 패턴을 사용하여 DataBinding을 구현하려고 합니다.

Huawei 푸시 키트 소개
푸시 키트는 개발자를 위해 Huawei에서 제공하는 메시징 서비스입니다. 푸시 키트는 클라우드에서 장치로의 메시징 채널을 설정합니다. HUAWEI 푸시 키트를 통합함으로써 개발자는 실시간으로 사용자 장치의 앱에 메시지를 보낼 수 있습니다. 푸시 키트는 개발자가 대상 고객에게 신속하게 도달할 수 있도록 도와줍니다. 푸시 알림은 모든 사람 또는 특정인에게 개별적으로 보낼 수 있습니다. 알림을 보내려면 사용자의 토큰이 필요합니다. 장치 그룹 또는 특정 사용자에게 메시지를 보낼 수 있습니다. 푸시 키트에는 두 가지 알림 유형이 있습니다. 텍스트 전용 스타일(더 긴 텍스트 메시지 표시) 및 큰 그림 스타일(큰 텍스트 및 이미지 메시지 표시).

전제 조건
1.Huawei 전화 EMUI 3.0 이상.
2. Android 4.4 이상(API 레벨 19 이상)을 사용하는 타사 휴대폰.
3.HMS 코어 APK 4.0.0.300 이상
4.안드로이드 스튜디오
5.AppGallery 계정
앱 갤러리 통합 프로세스
1. AppGallery Connect 포털에서 로그인하고 프로젝트를 생성하거나 선택합니다.
2. 프로젝트 설정으로 이동하여 구성 파일을 다운로드합니다.
3.일반 정보로 이동한 다음 데이터 저장소 위치를 제공합니다.

앱 개발
필수 종속성 추가:
• Android 스튜디오를 시작하고 새 프로젝트를 만듭니다. 일단 프로젝트가 준비되었습니다.
• Gradle 스크립트 폴더로 이동하여 build.gradle(모듈: 앱)을 엽니다.
•동일한 build.gradle 파일에서 수명 주기 라이브러리를 종속성에 추가합니다. 이 라이브러리는 UI를 ViewModel 및 LiveData에 연결하는 데 도움이 됩니다.

•HMS 푸시 키트에 대한 다음 종속성 추가
• Gradle 스크립트 폴더로 이동하여 build.gradle(프로젝트: 앱)을 엽니다.

코드 구현
• 다음 패키지 모델, push, viewmodel 생성.
모델: 기본 폴더에서 새 패키지를 만들고 이름을 모델로 지정합니다.

package com.hms.corrierapp

import android.os.Bundle
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProviders
import com.hms.corrierapp.databinding.ActivitySendTrackBinding
import com.hms.corrierapp.viewmodel.OrderViewModelFactory
import com.hms.corrierapp.viewmodel.TrackViewModel


class TrackActivity : AppCompatActivity() {

    private lateinit var binding: ActivitySendTrackBinding
    private lateinit var viewModel: TrackViewModel

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_send_track)

        binding = DataBindingUtil.setContentView(this, R.layout.activity_send_track)
        val factory = OrderViewModelFactory()
        viewModel = ViewModelProviders.of(this, factory).get(TrackViewModel::class.java)
        binding.lifecycleOwner = this

        viewModel.initNotification(this).observe(this, Observer {
            Toast.makeText(this, "Sent", Toast.LENGTH_SHORT).show();
        })

    }

}


알림 서비스:

package com.hms.corrierapp.push

import android.util.Log
import com.huawei.hms.push.HmsMessageService
import com.huawei.hms.push.RemoteMessage
import java.util.*

class PushService : HmsMessageService() {

    private val TAG = "PushService"

    override fun onNewToken(token: String?) {
        super.onNewToken(token)
        Log.i(TAG, "Receive Token : $token");
    }

    override fun onMessageReceived(message: RemoteMessage?) {
        super.onMessageReceived(message)

        Log.i(
            TAG, "getCollapseKey: " + message?.collapseKey
                    + "\n getData: " + message?.data
                    + "\n getFrom: " + message?.from
                    + "\n getTo: " + message?.to
                    + "\n getMessageId: " + message?.messageId
                    + "\n getSendTime: " + message?.sentTime
                    + "\n getMessageType: " + message?.messageType
                    + "\n getTtl: " + message?.ttl
        )

        val notification: RemoteMessage.Notification = message!!.notification

        Log.i(
            TAG, "\n getImageUrl: " + notification.imageUrl
                    + "\n getTitle: " + notification.title
                    + "\n getTitleLocalizationKey: " + notification.titleLocalizationKey
                    + "\n getTitleLocalizationArgs: " + Arrays.toString(notification.titleLocalizationArgs)
                    + "\n getBody: " + notification.body
                    + "\n getBodyLocalizationKey: " + notification.bodyLocalizationKey
                    + "\n getBodyLocalizationArgs: " + Arrays.toString(notification.bodyLocalizationArgs)
                    + "\n getIcon: " + notification.icon
                    + "\n getSound: " + notification.sound
                    + "\n getTag: " + notification.tag
                    + "\n getColor: " + notification.color
                    + "\n getClickAction: " + notification.clickAction
                    + "\n getChannelId: " + notification.channelId
                    + "\n getLink: " + notification.link
                    + "\n getNotifyId: " + notification.notifyId
        )
    }
}


팁과 요령
Identity Kit는 먼저 HUAWEI ID 등록 또는 로그인 페이지를 표시합니다. 사용자는 등록된 HUAWEI ID로 로그인한 후에만 Identity Kit에서 제공하는 기능을 사용할 수 있습니다.
푸시 키트는 지역 간 메시징을 지원하지만 메시징 성능이 영향을 받을 수 있습니다. 지역 간 메시징을 최소화하려면 사용자가 모이는 지역에 서버를 배치하는 것이 좋습니다.
결론
이 기사에서는 Android 애플리케이션에서 Huawei ID와 푸시 키트를 통합하는 방법을 배웠습니다. 이 기사를 완전히 읽은 후 사용자는 Kotlin을 사용하여 Courier Android 애플리케이션에서 Huawei ID 및 클라이언트 측 푸시 알림을 쉽게 구현할 수 있습니다.
이 기사를 읽어 주셔서 감사합니다. 이 글이 도움이 되셨다면 좋아요와 댓글을 꼭 남겨주세요. 그건 나에게 큰 의미 야.
참조
HMS 문서:
https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/introduction-0000001050048870
https://developer.huawei.com/consumer/en/doc/development/HMSCore-Guides/service-introduction-0000001050040060
푸시 키트 교육 비디오:
https://developer.huawei.com/consumer/en/training/course/video/101583005582480166

좋은 웹페이지 즐겨찾기