Unity For Android iOS 的本地推送

这是我在CSDN上面的正经发表的第一篇文章,希望能开个好头。本文主要讲解了如何在iOS和Android开启本地推送

1.先说iOS

Unity原生支持iOS的本地推送,需要引用UnityEngine.IOS.

1.1 注册

 NotificationServices.RegisterForNotifications(NotificationType.Alert | NotificationType.Badge | NotificationType.Sound);

/

NotificationType通知类型

NotificationType.Alert是指消息


Notification.Badge

Notification.Sound是指通知声音



1.2注册完之后需要写一个方法,就是推送的具体具体实现,Unity原生的方法就是,在NotificationService类中

public static void ScheduleLocalNotification(iOS.LocalNotification notification);

首先需要简单了解一下iOS.LocalNotification 这个类,这个类定义本地通知的,我主要用的到了其中的这几个属性

alertBody:定义了推送的内容,是string类型

fireDate:通知的时间.类型为DateTime。

alertAcion:简单理解为通知的标题,string类型

soundName:通知的声音,string 类型

hasAction:bool 类型,用来控制action是否可见,true为可见。

定义好了LocalNotification之后,就可以使用NotificationService.ScheduleLocalNotification(你定义的LocalNotification)就可以了

1.3. 清除和取消本地通知

还是Unity中的方法,

取消所有本地通知:NotificationService.CancelAllLocalNotifications

取消本地通知:NotificationService.CancelLocalNotification(iOS.LocalzNotifiation localNotification)

清除所有本地通知:NotificationService.ClearLocalNotifications()

这几个方法我只用到了取消所有本地通知和清除所有本地通知,ApplicationPause和Awake里面

不知道小伙伴们看到这里的时候是不是有点懵,反正刚开始的时候我看取消和清除是一样的,感觉很懵逼。举个例子给懵逼的小伙伴们。

ex:有一个app每天10点的时候都会固定发送本地通知,小明是这个app的用户,上午9:00-11:00的时候,小明一直运行这个App,小明打开程序之后,程序清除了昨天十点发送的本地通知,在通知栏里面看不到了这个通知。也会取消今天十点要发送的通知。小明在今天十点的时候不会接收到通知。

public class iOSLocalzNotificationTest : MonoBehaviour
    {
        /// <summary>
        ///定义并且给本地通知赋值
        /// </summary>
        UnityEngine.iOS.LocalNotification localNotification = new UnityEngine.iOS.LocalNotification()
        {
            alertAction = "test",
            alertBody = "this is a test",
            hasAction = true,
            fireDate = DateTime.Now.AddSeconds(10),
        };
        

        /// <summary>
        /// 在程序启动时注册通知并取消清除所有通知
        /// </summary>
        private void Awake()
        {
            ClearNotification();
            UnityEngine.iOS.NotificationServices.RegisterForNotifications(
                UnityEngine.iOS.NotificationType.Badge | UnityEngine.iOS.NotificationType.Alert | UnityEngine.iOS.NotificationType.Sound);
        }

        /// <summary>
        /// 计划通知
        /// </summary>
        /// <param name="localNotification">本地通知</param>
        private void ScheduleLocalNotification(UnityEngine.iOS.LocalNotification localNotification)
        {
            UnityEngine.iOS.NotificationServices.ScheduleLocalNotification(localNotification);
        }


        /// <summary>
        /// 清除取消通知
        /// </summary>
        private void ClearNotification()
        {
            UnityEngine.iOS.NotificationServices.ClearLocalNotifications();
            UnityEngine.iOS.NotificationServices.CancelAllLocalNotifications();
        }


        /// <summary>
        /// 程序转入前台时,取消并清除通知,程序转入后台时,计划通知
        /// </summary>
        /// <param name="pause"></param>
        private void OnApplicationPause(bool pause)
        {
            if (pause)
            {
                ScheduleLocalNotification(localNotification);
            }
            else
            {
                ClearNotification();
            }
        }

    }



2Android

由于Unity中没有安卓的通知方法,我在用了一个开源的安卓本地通知的一个插件。


地址是


https://github.com/Agasper/unity-android-notifications


如果有任何疑问,欢迎找博主交流。如需转载,请说明出处


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值