본문 바로가기
Devlog

[Unity] 로컬 푸쉬 기능 구현 (Android)

by wendy308 2020. 5. 28.
반응형

모바일 게임 대부분에 알림 기능이 있는데 두 가지 종류로 나뉜다.

로컬 푸시와 서버 푸시인데 대부분의 게임은 로컬푸쉬기능만 구현해도 크게 지장이 없다.

 

유니티에서 간단하게 로컬푸쉬 기능을 어떻게 구현하는지 알아보도록 하자.

 

내가 알아본 로컬 푸쉬 구현 방법은 유니티 자체 패키지 매니져에서 다운받아서 구현하는 방법과

애샛스토어에서 무료다운로드 하여 구현하는 방법을 알아봤는데

시간은 금이기에 최대한 간단하고 빠르게 구현 & 테스트를 해보기 위해

선택한것은 애샛스토어에서 다운받아서 구현하는쪽을 택했다.

 

https://assetstore.unity.com/packages/tools/integration/simple-android-notifications-free-68626

 

Simple Android Notifications Free | 기능 통합 | Unity Asset Store

Use the Simple Android Notifications Free from Hippo on your next project. Find this integration tool & more on the Unity Asset Store.

assetstore.unity.com

받아서 프로젝트에 임포트 시킨 후

 

반응형

 

프로젝트 폴더에 C# 스크립트를 하나 만든다.

이름은 대충 NotifyManager.cs 라고 하겠다.(각자 맘에 드는 네이밍으로 만들면 된다)

using UnityEngine;
using System.Text;
using System.Collections;
using System.Collections.Generic;
using System;
using Assets.SimpleAndroidNotifications;

public class NotifyManager : MonoBehaviour
{
    string title_short = "short";
    string content_short = "run run run";

    string title_specify = "specify";
    string content_specify = "run run run";

    private void OnApplicationPause(bool isPause) 
    {
        #if UNITY_ANDROID

        // 등록된 알림 모두 제거
        NotificationManager.CancelAll();

        if(isPause)
        {
            Debug.LogWarning("call NotificationManager");

            // 앱을 잠시 쉴 때 일정시간 이후에 알림
            DateTime timeToNotify = DateTime.Now.AddMinutes(1);
            TimeSpan time = timeToNotify - DateTime.Now;
            NotificationManager.SendWithAppIcon(time, title_short, content_short, Color.blue, NotificationIcon.Bell);

            // 앱을 잠시 쉴 때 지정된 시간에 알림
            DateTime specifiedTime1 = Convert.ToDateTime("8:05:00 PM");
            TimeSpan sTime1 = specifiedTime1 - DateTime.Now;
            if(sTime1.Ticks > 0) NotificationManager.SendWithAppIcon(sTime1, title_specify, content_specify, Color.red, NotificationIcon.Heart);
        }

        #endif
    }
}

크게 두가지 기능을 샘플로 구현해봤는데 게임을 하다가 종료하거나 서스펜드 모드로 잠시 나갈 때마다 

 

1. 일정시간 이후에 알림이 오게끔(예: 게임 종료 혹은 잠시 쉴 때 10분후에 돌아와 주세요 알림) 

2. 지정된 시간에 알림이 오게끔(예: 점심시간 12시 혹은 저녁시간 7시에 맞춰서 알림을 주고 싶을 때)

 

코드가 매우 심플하고 구현도 매우 쉽다.

 

실제로 빌드 후 기기에서 테스트 했을 때도 매우 잘 작동하는걸 확인했다.

빌드&테스트 완료한 유니티 버전은 2019.3.3f1

 

다음은 iOS에서 로컬푸쉬 구현하는법을 알아보도록 하겠다.

반응형

댓글