Unity(Android)를 통해 GCM Push 알림을 받을 수 있는 플러그인을 만들었습니다.

16445 단어 AndroidUnity
GiitHub에서 공개합니다.
  • snaka/UnityGCMPlugin
  • 만약 무슨 잘못이 있으면 저에게 알려 주세요.

    Unity GCMPlugin과 함께 수행합니까?


    Unity Android 응용 프로그램에서 GCM(Google Cloud Messaging) 서비스로 PUSH 알림을 받는 플러그인을 사용합니다.
    사용 예로 프레젠테이션 소프트웨어도 GiitHub로 높아졌다.
  • snaka/UnityGCMPluginDemo
  • 할 수 있는 일

  • 어플리케이션이 시작되지 않은 상태에서도 PUSH 알림을 받을 수 있습니다.
  • 알림을 클릭하면 앱을 시작할 수 있습니다.
  • 설치하다.


    Step1. jar 파일 다운로드

  • unitygcmplugin.jar
  • Step2. 프로젝트로jar 파일 복사


    방금 다운로드한 unitygcmplugin.jar을 {あなたのUnityプロジェクト}/Assets/Plugins/Android 부하로 복사합니다.

    Step3. 프로젝트에 의존하는jar 파일을 복사합니다


    다음jar 파일을 {YourUnityProject}/Assets/Plugins/Android 폴더 아래로 복사합니다.
  • android-support-v4.jar(복제원: {안드로이드SDK}/sdk/extraas/android/support/v7/app compoat/libs/android-support-v4.jar)
  • google-play-services.jar(복제원: {안드로이드SDK}/sdk/extras/google play 서비스s/libproject/google-play-서비스s lib/libs/구글-play-services.jar)
  • Step4. AndroidManifest.xml 편집


    AndroidManifest.{YourUnityProject}/Assets/Plugins/Android에서 xml 파일을 준비합니다. 다음과 같은 편집 내용입니다.
    AndroidManifest.xml
    <?xml version="1.0" encoding="utf-8"?>
    <manifest
        xmlns:android="http://schemas.android.com/apk/res/android"
        package="info.snaka.unitygcmplugin.demo"
        android:installLocation="preferExternal"
        android:theme="@android:style/Theme.NoTitleBar"
        android:versionCode="1"
        android:versionName="1.0">
        <supports-screens
            android:smallScreens="true"
            android:normalScreens="true"
            android:largeScreens="true"
            android:xlargeScreens="true"
            android:anyDensity="true"/>
    
        <uses-permission android:name="android.permission.INTERNET" />
        <uses-permission android:name="android.permission.GET_ACCOUNTS" />
        <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
        <uses-permission android:name="android.permission.WAKE_LOCK" />
    
        <permission android:name="info.snaka.unitygcmplugin.permission.C2D_MESSAGE" android:protectionLevel="signature" />
        <uses-permission android:name="info.snaka.unitygcmplugin.permission.C2D_MESSAGE" />
    
        <application
            android:icon="@drawable/app_icon"
            android:label="@string/app_name"
            android:debuggable="true">
    
            <activity android:name="info.snaka.unitygcmplugin.CustomUnityPlayerActivity"
                android:label="@string/app_name"
                android:configChanges="fontScale|keyboard|keyboardHidden|locale|mnc|mcc|navigation|orientation|screenLayout|screenSize|smallestScreenSize|uiMode|touchscreen">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                    <category android:name="android.intent.category.LEANBACK_LAUNCHER" />
                </intent-filter>
                <meta-data android:name="unityplayer.UnityActivity" android:value="true" />
                <meta-data android:name="unityplayer.ForwardNativeEventsToDalvik" android:value="false" />
            </activity>
    
            <receiver android:name="info.snaka.unitygcmplugin.GcmBroadcastReceiver" android:exported="true">
                <intent-filter>
                    <action android:name="com.google.android.c2dm.intent.RECEIVE" />
                    <category android:name="info.snaka.unitygcmplugin" />
                </intent-filter>
            </receiver>
    
            <service android:name="info.snaka.unitygcmplugin.GcmIntentService" />
    
            <meta-data android:name="apiProjectNumber" android:value="!{Your project number}" />
        </application>
    </manifest>
    
    참고: {Your project number} Google Developer Constore에 표시된 항목 번호로 바꾸십시오.(이전 시도: 33;)필요에 따라 삭제하지 마십시오.

    설치 완료

    사용법


    GcmEvents 생성


    "GcmEvents"라는 이름으로 빈 GameObject를 만드는 새 장면을 만듭니다.

    GcmEvents에 스크립트 첨부


    GcmEvents를 만들면 다음 스크립트가 표시됩니다.
    GcmEvents.cs
    using System.Collections;
    
    public class GcmEvents : MonoBehaviour {
        string m_regid = "";
    
        /// <summary>
        /// Get registration ID from cache.
        /// </summary>
        void Start () {
            Debug.Log ("***** Start UnityGCMPluginSample");
            var unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
            var activity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
            var appContext = activity.Call<AndroidJavaObject>("getApplicationContext");
    
            Debug.Log ("***** get RegistrationId");
            var registrar = new AndroidJavaClass ("info.snaka.unitygcmpluginlib.GcmRegistrar");
    
            registrar.CallStatic ("clearCache", new object[] { appContext });
    
            string registrationId = registrar.CallStatic<string> ("getRegistrationId", new object[] { appContext });
    
            if (!string.IsNullOrEmpty (registrationId))
            {
                Debug.Log ("***** RegistrationId:[" + registrationId + "]");
            }
            else
            {
                // Invoke background thread to get registration ID
                Debug.Log ("***** id empty");
                registrar.CallStatic("registerInBackground", new object[]{ appContext });
            }
        }
    
    
        /// <summary>
        /// Callback from background thread if register completed.
        /// </summary>
        /// <param name="registerId">Registration ID</param>
        public void OnRegister(string registerId) {
            Debug.Log ("##### RegisterId: " + registerId);
            m_regid = registerId;
        }
    
    
        /// <summary>
        /// Display registration ID.
        /// </summary>
        void OnGUI() {
            GUILayout.TextArea(m_regid, GUILayout.ExpandWidth(true));
        }
    }
    

    공지 준비 아이콘


    공지 아이콘을 다음 위치에 배치합니다.Assets/Plugins/Android/res/drawable/notify.png아이콘 크기
    Android 아이콘 크기(2013.12 업데이트)
    http://greety.sakura.ne.jp/redo/2012/02/android201202.html

    PUSH 알림 테스트


    터미널curl을 사용하여 다음 PUSH 알림을 테스트 배포할 수 있습니다.
    $ curl --header "Authorization: key=(put your API key here)" \
    --header Content-Type:"application/json" \
    https://android.googleapis.com/gcm/send \
    -d "{\"registration_ids\":[\"(put your Registration ID here)\"],\"data":{\"message\":\"Hello\"}}"
    
    (put your API key here) Google Developer Constore의 [API 및 인증 정보] - [인증 정보]에 표시된 "API 키"로 바꿉니다.

    API 키 획득 방법은 다음 공식 페이지를 참조하십시오.
  • Getting Started | Android Developer
  • (put your Registration ID here) 애플리케이션을 시작할 때 표시된 Registration ID로 교체하십시오.

    알림이 성공하면 장치 상태 표시줄에 다음과 같은 알림이 표시됩니다.
    알림을 누르면 프로그램이 시작됩니다.


    Todo

  • 아이콘이 알림에 최적화되지 않아 모양이 좋지 않습니다
  • Google Play Services가 디바이스에서 유효한지 확인하지 않았습니다.
  • unitypackage 형식으로 봉인하여 설치 절차를 간소화하고자 합니다
  • 알림의 제목에 표시할 문자열을 사용자 정의할 수 있음
  • LICENSE


    The MIT License (MIT)

    좋은 웹페이지 즐겨찾기