Unity¤Ë´ØÏ¢¤¹¤ëµ­»ö¤Ç¤¹

¡ß
¡¡Android & iOS ¤Î¥í¡¼¥«¥ë¥×¥Ã¥·¥åÄÌÃΤΥѡ¼¥ß¥Ã¥·¥ç¥ó(µö²Ä)¥À¥¤¥¢¥í¥°¤òɽ¼¨¤¹¤ë¼ÂÁõÎã¤Ç¤¹¡£
¤³¤Îµ¡Ç½¤ò¼ÂÁõ¤¹¤ë¤³¤È¤Ë¤è¤ê¡¢Ã¼Ëö¤Ç¤Î¥í¡¼¥«¥ë¥×¥Ã¥·¥åÄÌÃΤεö²Ä³Îǧ¤Î¥À¥¤¥¢¥í¥°¤òɽ¼¨¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Þ¤¹¡£
¤Þ¤¿¡¢¥À¥¤¥¢¥í¥°Æâ¤Ç¡Öµö²Ä¡×¤ò²¡¤·¤¿¤é¡¢°Ê¹ß¤Ïµö²Ä³Îǧ¥À¥¤¥¢¥í¥°¤òɽ¼¨¤·¤Ê¤¤À߷פˤʤäƤ¤¤Þ¤¹¡£





´Ä¶­


Unity 6000.3.x
Mobile Notifications 2.4.x

¡¡³°Éô¥é¥¤¥Ö¥é¥ê¤È¤·¤Æ UniTask ¤òÍøÍѤ·¤Æ¤¤¤Þ¤¹¡£

UniTask 2.5.11


Mobile Notifications ¥Ñ¥Ã¥±¡¼¥¸¤ò¥¤¥ó¥¹¥È¡¼¥ë¤¹¤ë


¡¡Unity ¤Î PackageManager ¤è¤ê Mobile Notifications ¤ò¥¤¥ó¥¹¥È¡¼¥ë¤·¤Þ¤¹¡£


Unity ¸ø¼°¥É¥­¥å¥á¥ó¥È
Mobile Notifications package
https://docs.unity.cn/Packages/com.unity.mobile.no...

¡¡ÍøÍѤ·¤Æ¤¤¤ë¥Ð¡¼¥¸¥ç¥ó¤Ï 2.4.x ·Ï¤Ç¤¹¡£


Android


¡¡Android 13°Ê¾å¤Ç¤Ï¡¢POST_NOTIFICATIONS ¸¢¸Â¤ò¥æ¡¼¥¶¡¼¤ËÍ׵᤹¤ëɬÍפ¬¤¢¤ê¤Þ¤¹¡£

¡¡PermissionStatus ¤Ï Moble Notifications ¥Ñ¥Ã¥±¡¼¥¸¤ÇÍѰդµ¤ì¤Æ¤¤¤ë enum ¤Ç¤¹¡£
¤³¤Á¤é¤Î¾ðÊó¤òÍøÍѤ·¤Æ¥í¡¼¥«¥ë¥×¥Ã¥·¥åÄÌÃΤμÂÁõ¤ò¹Ô¤Ã¤Æ¤¤¤Þ¤¹¡£
Moble Notifications ¤Îµ¡Ç½¤òÍøÍѤ¹¤ë¤Ë¤Ï using Unity.Notifications.Android ¤ÎÀë¸À¤¬É¬ÍפǤ¹¡£



¡¡¥½¡¼¥¹¥³¡¼¥É¤Ï Mobile Notifications 2.4.x¤ÎÆâÍÆ¤Çµ­ºÜ¤·¤Æ¤¤¤Þ¤¹(¸Å¤¤¥Ð¡¼¥¸¥ç¥ó¤Ç¤¹¤È API ¤Ê¤É¤¬°Û¤Ê¤ê¤Þ¤¹)¡£

¡¡¥À¥¤¥¢¥í¥°Æâ¤Ç¡Öµö²Ä¡×¤ò²¡¤·¤¿¤é¡¢°Ê¹ß¤Ïµö²Ä³Îǧ¥À¥¤¥¢¥í¥°¤òɽ¼¨¤·¤Ê¤¤À߷פˤʤäƤ¤¤Þ¤¹¡£

NotificationPermissionManager.cs
using Cysharp.Threading.Tasks;
using System.Threading;

#if UNITY_ANDROID
using Unity.Notifications.Android;
#endif

public static class NotificationPermissionManager
{
    public static async UniTask<PermissionStatus> RequestPermissionAsync(CancellationToken token = default)
    {
#if UNITY_EDITOR

        await UniTask.Yield(cancellationToken: token);
        return PermissionStatus.Allowed;

#elif UNITY_ANDROID

        PermissionStatus status = AndroidNotificationCenter.UserPermissionToPost;

        switch (status)
        {
            case PermissionStatus.Allowed:
                return PermissionStatus.Allowed;

            case PermissionStatus.Denied:
            case PermissionStatus.DeniedDontAskAgain:
                return status;

            case PermissionStatus.RequestPending:
                while (AndroidNotificationCenter.UserPermissionToPost == PermissionStatus.RequestPending)
                {
                    token.ThrowIfCancellationRequested();
                    await UniTask.Yield(PlayerLoopTiming.Update, token);
                }

                return AndroidNotificationCenter.UserPermissionToPost;

            case PermissionStatus.NotRequested:
                PermissionRequest request = new PermissionRequest();

                while (request.Status == PermissionStatus.RequestPending)
                {
                    token.ThrowIfCancellationRequested();
                    await UniTask.Yield(PlayerLoopTiming.Update, token);
                }

                return request.Status;
        }

        return status;

#else

        return PermissionStatus.Allowed;

#endif
    }
}



¡¡¼Â¹Ô¦¤Î¼ÂÁõÎã¤Ç¤¹¡£

PermissionStatus status = await NotificationPermissionManager.RequestPermissionAsync();

switch (status)
{
    case PermissionStatus.Allowed:
        Debug.Log("ÄÌÃεö²ÄºÑ¤ß");
        break;

    case PermissionStatus.Denied:
        Debug.Log("ÄÌÃεñÈÝ");
        break;

    case PermissionStatus.DeniedDontAskAgain:
        Debug.Log("ÀßÄêÊѹ¹¤¬É¬Í×");
        break;
}


iOS ¤Î¾ì¹ç


¡¡Project Settings Æâ¤Î Mobile Notifications ¤òÁªÂò¤·¡¢iOS ¥¿¥Ö¤òÁªÂò¤·¤Þ¤¹¡£
¤³¤Á¤é¤Ë¤¢¤ë Request Authorization on App Launch ¤ò ON ¤Ë¤·¤Þ¤¹¡£





¡¡¤³¤ÎÀßÄê¤òON¤Ë¤¹¤ë¤È¡¢¥¢¥×¥êµ¯Æ°»þ¤ËUnity¤¬¼«Æ°¤Ç UNUserNotificationCenter ¤ØÄÌÃθ¢¸Â¤òÍ׵ᤷ¤Æ¤¯¤ì¤Þ¤¹¡£

¡¡¤Ä¤Þ¤ê Android ¤È¤Ï°Û¤Ê¤ê¡¢¥½¡¼¥¹¥³¡¼¥É¤Ë¤è¤ë¥Ñ¡¼¥ß¥Ã¥·¥ç¥ó¤Î¼Â¹Ô½èÍý¤ÏÉÔÍפǤ¹¡£

¡¡Request Authorization on App Launch ¤ò OFF ¤Ë¤·¤¿¾ì¹ç¤Ë¤Ï¡¢Android ¤Î¤è¤¦¤Ë¥½¡¼¥¹¥³¡¼¥É¤Ç¤Î¼Â¹Ô¤¬É¬Íפˤʤê¤Þ¤¹¡£


¥í¡¼¥«¥ë¥×¥Ã¥·¥åÄÌÃΤεö²ÄÄÌÃÎ¥À¥¤¥¢¥í¥°É½¼¨¤Î¼ÂÁõ¤Î¥¿¥¤¥ß¥ó¥°¤Ë¤Ä¤¤¤Æ


¡¡¥²¡¼¥à³«»Ïľ¸å¤Ë¡ÖÄÌÃΤòµö²Ä¤·¤Þ¤¹¤«¡©¡×¤ÈÆÍÁ³½Ð¤ë¤È¡¢¤«¤Ê¤ê¤Î³ä¹ç¤Ç¡Öµö²Ä¤·¤Ê¤¤¡×¤¬²¡¤µ¤ì¤Þ¤¹¡£
¤³¤ì¤Ï¥æ¡¼¥¶¡¼¤È¤·¤Æ¤ß¤ì¤ÐÅöÁ³¤ÎȽÃǤǤ¢¤ê¡¢´ðËÜŪ¤Ë¡¢¤É¤Î¤è¤¦¤Ê¥í¡¼¥«¥ëÄÌÃΤ¬Íè¤ë¤Î¤«¤ï¤«¤é¤Ê¤¤¾õÂ֤ǡֵö²Ä¤¹¤ë¡×¤³¤È¤Ï¤¢¤Þ¤ê¤Ê¤¤¤Ç¤·¤ç¤¦¡£

¡¡ºÇ¶á¤Î¥²¡¼¥à¤Ï

¥²¡¼¥à³«»Ï
    ¢­
¥Á¥å¡¼¥È¥ê¥¢¥ë
    ¢­
¥²¡¼¥àÆâ¤Î¥¤¥Ù¥ó¥È¡¡¢ª¡¡¡Ö¥¹¥¿¥ß¥Ê²óÉü¤òÄÌÃΤǤ­¤Þ¤¹¡×¡Ö̵ÎÁ¤Î¥¬¥Á¥ã¤¬°ú¤±¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¤éÄÌÃΤǤ­¤Þ¤¹¡×
    ¢­
ÄÌÃεö²Ä¥À¥¤¥¢¥í¥°

¡¡¤È¤¤¤¦Î®¤ì¤¬°ìÈÌŪ¤«¤È»×¤ï¤ì¤Þ¤¹¡£
¤É¤¦¤¤¤Ã¤¿ÆâÍÆ¤ÎÄÌÃΤ¬¤¯¤ë¤Î¤«¤ï¤«¤Ã¤Æ¤«¤é¤ÎÊý¤¬ÄÌÃΤεö²ÄΨ¤¬¤«¤Ê¤ê¹â¤¯¤Ê¤ê¤Þ¤¹¡£

¡¡¼«Ê¬¤¬£±¥æ¡¼¥¶¡¼¤Ç¤¢¤ëÌÜÀþ¤òÂç»ö¤Ë¤·¤Æ¡¢¼ÂÁõ¤¹¤ë¥¿¥¤¥ß¥ó¥°¤ò¸¡Æ¤¤·¤Æ¤ß¤Þ¤·¤ç¤¦¡£

¥³¥á¥ó¥È¤ò¤«¤¯


¡Öhttp://¡×¤ò´Þ¤àÅê¹Æ¤Ï¶Ø»ß¤µ¤ì¤Æ¤¤¤Þ¤¹¡£

ÍøÍѵ¬Ìó¤ò¤´³Îǧ¤Î¤¦¤¨¤´µ­Æþ²¼¤µ¤¤

Menu



´ðÁÃ

µ»½Ñ/Ãμ±(¼ÂÁõÎã)

3D¥¢¥¯¥·¥ç¥ó¥²¡¼¥à

2D¤ª¤Ï¤¸¤­¥²¡¼¥à(ȯŸÊÔ)

2D¶¯À©²£¥¹¥¯¥í¡¼¥ë¥¢¥¯¥·¥ç¥ó(ȯŸÊÔ)

2D¥¿¥Ã¥×¥·¥å¡¼¥Æ¥£¥ó¥°(³ÈÄ¥ÊÔ)

¥ì¡¼¥¹¥²¡¼¥à(È´¿è)

2DÊüÃÖ¥²¡¼¥à(ȯŸÊÔ)

3D¥ì¡¼¥ë¥¬¥ó¥·¥å¡¼¥Æ¥£¥ó¥°(±þÍÑÊÔ)

3Dæ½Ð¥²¡¼¥à(È´¿è)

2D¥ê¥¢¥ë¥¿¥¤¥à¥¹¥È¥é¥Æ¥¸¡¼

3D¥¿¥Ã¥×¥¢¥¯¥·¥ç¥ó(NavMeshAgent »ÈÍÑ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥«¥¨¥ë¤Î°Ù¤Ë¡Á¡¢¥Ü¥³¥¹¥«¥¦¥©¡¼¥ºÉ÷)

VideoPlayer ¥¤¥Ù¥ó¥ÈϢư¤Î¼ÂÁõÎã

VideoPlayer ¥ê¥¹¥ÈÆâ¤«¤é¥à¡¼¥Ó¡¼ºÆÀ¸¤Î¼ÂÁõÎã(ȯŸ)

AR ²èÁüÉÕ¤­¥ª¥Ö¥¸¥§¥¯¥ÈÀ¸À®¤Î¼ÂÁõÎã

AR ¥ê¥¹¥ÈÆâ¤«¤éÀ¸À®¤Î¼ÂÁõÎã(ȯŸ)

2D¥È¥Ã¥×¥Ó¥å¡¼¥¢¥¯¥·¥ç¥ó(¥µ¥Ð¥¤¥Ð¡¼É÷)

private



¤³¤Î¥µ¥¤¥ÈÆâ¤ÎºîÉʤϥæ¥Ë¥Æ¥£¤Á¤ã¤ó¥é¥¤¥»¥ó¥¹¾ò¹à¤Î¸µ¤ËÄ󶡤µ¤ì¤Æ¤¤¤Þ¤¹¡£

´ÉÍý¿Í/Éû´ÉÍý¿Í¤Î¤ßÊÔ½¸¤Ç¤­¤Þ¤¹

¹­¹ðÊç½¸Ãæ