
正文
ios开发通知的简单介绍
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
IOS开发之delegate和Notification的区别
区别一:delegate针对one-to-one关系,并且reciever可以返回值给sender;notification 可以针对one-to-one/many/none,reciever无法返回值给sender;所以,delegate用于sender希望接受到reciever的某个功能反馈值,notification用于通知多个object某个事件。
区别二:
Delegate:消息的发送者(sender)告知接收者(receiver)某个事件将要发生,delegate同意然后发送者响应事件,delegate机制使得接收者可以改变发送者的行为。通常发送者和接收者的关系是直接的一对多的关系。
Notification:
消息的发送者告知接收者事件已经发生或者将要发送,仅此而已,接收者并不能反过来影响发送者的行为。通常发送者和接收者的关系是间接的多对多关系。
区别三:效率肯定是delegate比nsnotification高。
区别四:delegate方法比notification更加直接,最典型的特征是,delegate方法往往需要关注返回值,也就是delegate方法的结果。
delegate用于声明委托。Notification用于通告。委托是一种引用类型,引用类型的 Shared 方法或对象的实例方法。任何具有匹配参数类型和返回类型的过程均可用来创建此委托类的实例。然后就可以通过委托实例来调用过程。
相关问答
Q1: iOS 重要通知的设置(critical-alerts)
授予权限还是有些要求的,这些为苹果考虑到用可能到此功能的分类:Healthcare(医疗保健)、Public Safety(公共安全)、Personal Safety and Security(个人安全)、Enterprise In-house(企业内部)、Other(其他分类也可描述使用场景)
需要填写:
1.app类型
2.描述你的app
3.发送紧急通知的消息类型
4.紧急通知的频率
5.解释为什么需要用到紧急通知及功能设计过程
Request a Critical Alert Notifications Entitlement
等待些许时日后会收到申请成功的邮件
然后我们登录自己的 开发者账号 创建开发或者发布的provisioning profile证书最后就多了一个这样的选项
critical alerts 只支持iOS12.0以上的系统,在设置UNUserNotificationCenter中增加criticalAlert
然后在 app.entitlements 中增加key com.apple.developer.usernotifications.critical-alerts 类型为boolean 并将值设为 1
使用我们刚刚创建的provisioning profile证书运行demo,可看见app中多了
参考:
Q2: ios开发,如何设置一个重复的通知消息,比如设置每10小时通知一次,程序已经关闭,也没在后台运行也
思路:
这个功能主要是体现在server端上。在ios客户端上你只需要注册好通知就可以了。
在server端你需要通过拿到的p12文件及要接收通知的设备的token,通过socket协议给苹果的APNS发送你要发送的通知消息,这是server发送的流程。那么你想每间隔10小时发送一次,这就需要你在server端开启一个定时任务,间隔时间为10小时。也就是说每隔10小时就会调用一次server端向APNS发送通知消息的方法。
Q3: ios开发 通知为什么会响应三次 在真机上
思路: 这个功能主要是体现在server端上。在ios客户端上你只需要注册好通知就可以了。 在server端你需要通过拿到的p12文件及要接收通知的设备的token,通过socket协议给苹果的APNS发送你要发送的通知消息,这是server发送的流程。
Q4: iOS开发将通知栏字体设置为白色
很多情况下通知栏字体是黑色的,看起来不怎么协调。
在TARGETS Info中添加以下两个key:
1.View controller-base status bar appearance,值设置为NO
2.Status bar style,值设置为Light Content







