Tag: 通知

向通知添加声音

您是否曾经从ESPN应用程序收到过推送通知,它会以ESPN的“ da-na-na,da-na-na”声音显示最终得分? 您是否曾经考虑过上述通知,并认为我希望可以为自己的应用程序做到这一点? 不再思考。 病态向您展示如何使用自定义声音发出通知。 第一步-使用iTunes转换为.m4r 如果您有 mp3 或 wav 文件,则可以跳过第一步。 您需要做什么:将歌曲添加到iTunes>转换为AAC>在finder中查找>将文件扩展名从.m4a重命名为.m4r .AAC是我们想要的。 这是有关如何在iTunes中将文件转换为AAC的更多信息https://support.apple.com/zh-cn/HT204310 第一步(替代方法)-使用Garageband转换为.m4r 在Garageband中打开文件。 编辑所需的确切声音。 Apple要求所有通知声音必须在30秒以内。 然后单击共享>将歌曲下载到iTunes… 在iTunes文件中>在Finder中显示。 然后将.m4a重命名为.m4r,单击“确定”。 将文件拖到桌面进行下一步。 第二步-将声音转换为CAF 我们需要将.m4r转换为.caf文件。 有趣的事实.caff代表核心音频文件格式。 输入此afconvert命令,该命令已存在于终端中 afconvert -d LEI16 -f caff LEI16 @ 44100 -c 1 input_file.xxx output_file.caf 因此,例如,如果我有文件“ ANewRecord.m4r”(没有空格),则输入以下命令: afconvert -f caff -d LEI16 @ 44100 -c 1 ANewRecord.m4r newRecordm4r.caf 第三步-拖放 将新的.caf文件放入项目的Supporting Files文件夹中。 确保将您的应用选择为目标。 […]

关于iOS中垃圾邮件通知的想法

我会尽量减少通知。 只有重要的人才能通过。 但是当我收到这样的通知时,我的血液沸腾了: 大巡回赛—现在观看第4集。 所有星期五都有新剧集。 亚马逊不是唯一的罪魁祸首。 当我收到来自The Fork的几条通知时,我在Twitter上遇到了它们。 他们答应对此做某事,然后几天后,我再次收到垃圾邮件……并收到相同的通知。 尽管Apple App Store审查指南的“设计”部分4.5.3禁止这样做,但大公司并不关心。 我认为主要问题来自这些东西不花钱而且对苹果不可见的事实。 我认为我们应该能够像处理垃圾邮件一样向Apple报告这些内容。 在每个通知上放一个按钮将是一个过大的杀伤力,用胖胖的拇指很容易将其击中。 它可以进入通知中心的幻灯片或3D触摸菜单。 但是问题在于,如果在手机解锁时弹出通知,而您通过反射点击它,则可以免费通行。 这些令人发疯。 我的想法是在“隐私”选项卡中放置一个部分。 该视图将显示您收到的最后几条通知,并带有向苹果报告的选项,以及忽略来自此应用程序的具有相同文本的通知的选项。 最初,这不会产生太大影响,但是随着时间的流逝,Apple可能会使用这些数据来给应用程序发布者施加压力,甚至可能开始训练Siri充当垃圾邮件过滤器。 最初在 yozy.net上 发布 。

iOS 10远程通知

在iOS 10中,通知发生了很大变化。 远程和本地通知方法是统一的。 您可以使用通知扩展名添加图像之类的媒体。 在本文中,我将讨论如何设置通知类型和注册远程通知。 在下一部分中,我将向您展示如何处理远程通知和可操作的通知。 远程通知过程 首先,了解如何使用远程通知会很有帮助。 远程通知涉及以下步骤: 配置您的通知类型并注册远程通知 注册到APN的远程通知 将设备令牌注册到服务器(推送通知提供程序) 在提供商和APN之间进行通信 处理远程通知 步骤3和4是服务器端过程。 步骤1.配置通知类型并注册远程通知 1)配置通知类型 您需要请求授权才能接收通知。 在此阶段,您可以设置通知类型,例如警报,声音和标志。 在iOS 9及以下版本中 使用`registerUserNotificationSettings`方法 在iOS 10中 使用`requestAuthorization(options:completionHandler:)`方法。 func requestAuthorization(options:UNAuthorizationOptions = [], completeHandler:@转义(Bool,Error?)-> Void) 选项描述您要提供的通知类型。 completeHandler具有两个参数: Grant和error –如果未发生错误,则错误为nil 。 – 授予的返回true或false取决于以下情况。 这不是我期望的结果。 为什么? 授予所请求选项的授权时,此参数的值为* true *。 当一个或多个选项的授权被拒绝时,该值为* false *。 在Apple文档中,他们谈论的是请求的选项,而不是通知设置。 但是实际的测试结果与上面的列表不同。 即使用户更改了授权选项(例如在设置应用中禁用警报),它也没有返回“ false”值。 首次启动应用程序时,“授权请求”对话框仅出现一次。 因此,我建议您将`.alert`选项设置为默认选项。如果您从`registerUserNotificationSettings`或`requestAuthorization(options:completionHandler:)`中省略了该选项,则无法在设置应用程序中为您的应用程序通知找到警报选项。 2)注册远程通知 调用registerForRemoteNotifications()方法。 如果注册成功,它将自动调用` […]

具有自定义操作的通知

本地或远程通知通常在界面中显示信息,并且用户启动应用程序以执行任何操作。 可操作的通知使您可以在不启动应用程序的情况下响应通知或对通知执行操作。 声明自定义动作 每个动作都是类别和动作对象的组合。 必须在启动时声明所有操作。 UNNotificationCategory对象定义应用程序支持的通知类型, UNNotificationAction对象定义每种类型要显示的按钮。 将操作对象分配给所需操作集的类别。 注意:每个动作必须具有唯一的标识符。 这是区分一个动作与另一个动作的唯一方法,即使这些动作属于不同的类别。 分配类别标识符 每个类别都有一个唯一的标识符,通过该标识符,您的应用可以识别已传递​​的通知的类型及其相应的操作。 在为本地通知创建对象时,必须在UNMutableNotificationContent对象中指定类别标识符。 同样,应该在远程通知有效负载中使用正确的标识符指定类别关键字。 注意:如果您未指定类别标识符 ,则系统不会显示任何操作按钮。 处理自定义动作 您应该处理为通知指定的所有操作。 当控件进入“ userNotificationCenter(_ didReceive:withCompletionHandler :)”方法时,请处理它们。 使用actionIdentifier属性 的UNNotificationResponse确定要执行的操作。

UILocalNotification iOS

本地通知使您的应用可以通知用户有关不需要使用服务器的内容的信息。 与从服务器触发的远程通知不同,本地通知是在应用内安排和触发的。 通常,通知的目标是增加用户与应用程序的交互,从而邀请或诱使用户打开并与其交互。 iOS 10中已弃用UILocalNotification。请改用UserNotifications框架。 安排本地通知 确保您看到注册本地通知以使其正常运行: 迅速 让通知= UILocalNotification() notification.alertBody =“您好,本地通知!” notification.fireDate = NSDate()。dateByAddingTimeInterval(10)// 10秒后 UIApplication.sharedApplication()。scheduleLocalNotification(通知) 目标C UILocalNotification * notification = [[UILocalNotification alloc] init]; notification.alertBody = @“您好,本地通知!” notification.fireDate = [NSDate dateWithTimeIntervalSinceNow:10]; //现在10秒钟后[[UIApplication sharedApplication] scheduleLocalNotification:notification]; 要在iOS模拟器中查看通知,请键入^⌘H(control-command-H)返回首页,然后键入⌘L(command-L)以锁定设备。 等待几秒钟,然后将出现通知(此外观将根据“注册本地通知”中讨论的通知类型而有所不同): 在通知上滑动即可返回到应用程序(请注意,如果您在第一个视图控制器的viewDidLoad,viewWillAppear,viewDidAppear等中调用了此方法,则会再次安排该通知)。 立即显示本地通知 如果要立即显示本地通知,请致电: 迅捷3 UIApplication.shared.presentLocalNotificationNow(notification) 迅捷2 UIApplication.sharedApplication()。presentLocalNotificationNow(通知) 目标C [[UIApplication sharedApplication] presentLocalNotificationNow:notification]; 使用此方法的一个优点是您不必设置自己的fireDate和timeZone属性。

NSNotifications —整个事实

尽管每篇文章都以其实现和用法解释了NSNotifications,但很少有人对它的基础知识给予足够的重视。 在这里,我试图突出显示遗漏的这些点。 使用NotificationCenter,您可以将数据从应用程序的一部分广播到另一部分。 它使用“ 观察者”模式 ,通过称为“ 通知中心”的中央调度程序,在收到通知时通知注册的观察者。 NotificationCenter 究竟 如何 工作? 它基本上有三个组成部分 侦听通知的“侦听器”,称为观察者 “发件人”,在发生某些情况时发送通知 通知中心本身,可跟踪观察者和通知 NSNotificationCenter可以处理一对多和多对多通信。 您何时使用 NotificationCenter ? 当应用程序的两个或多个没有正式连接的组件之间进行通信时, 当沟通需要反复一致地进行时 使用一对多或多对多通讯时 您如何注册观察员? NotificationCenter.default.addObserver(自身,选择器:#selector(onDidReceiveData(_ :)),名称:.didReceiveData,对象:无) addObserver(_:selector:name:object:)函数具有4个参数: 第一个参数observer是未命名的 ,您可以为其提供对作为该通知观察者的对象的引用,该对象通常是self 第二个参数selector是在发生通知时要调用的函数,其作用类似于目标动作模式 第三个参数name是您要侦听的通知的名称,其类型为Notification.Name 第四个参数object是一个可选对象,您希望接收其通知,因此,如果设置了该对象,则只会从该“发送者”接收通知 您如何添加通知? 扩展Notification.Name { 静态let didReceiveData = Notification.Name(“ didReceiveData”)静态let didCompleteTask = Notification.Name(“ didCompleteTask”)静态letcompleteLengthyDownload = Notification.Name(“ completedLengthyDownload”) } NotificationCenter.default.addObserver(自身,选择器:[selector],名称:.didCompleteTask,对象:nil) 您如何发布通知? NotificationCenter.default.postNotification(名称:.didReceiveData,对象:无) onDidReceiveData(_:)函数如下所示: @objc func onDidReceiveData(_通知:通知) {如果让数据= […]

营销人员应该问自己关于iOS 12的7个问题

市区飞艇的Alyssa Meritt和Meghan Suslak 自9月份推出以来, Apple的iOS 12在控制品牌如何与他们进行沟通方面为单个用户提供了更多功能和选项。 最大的变化之一是, 通知中心将成为Apple用户生活中最重要的收件箱。 分组通知 :来自品牌应用程序的通知将堆叠显示在一个组中,除非它们包含线程ID,将特定通知(例如体育比赛或旅行消息)分组在一起。 锁定屏幕通知管理 :iOS 12使在Notification Center中更轻松地管理通知设置(可能选择退出)。 “关闭”通知确认提示将深度链接到您应用的首选项中心。 安静通知与显眼通知 :显眼通知会点亮您的锁定屏幕,其中可能包括声音或振动。 安静的通知将直接传递到通知中心,而无需任何其他警报元素。 临时授权 :这是iOS 12中的新授权状态。如果某个应用启用了临时授权,则用户将被临时选择加入,并将接收直接发送到通知中心的安静通知。 (已经选择加入或退出通知的用户不会受到影响。) 对于营销人员而言,这增加了发送具有持续价值的目标内容的准备。 对用户的更多控制意味着客户有更多机会关闭无法满足其需求的品牌的通信。 为了防止断开连接并充分利用新更新,每个营销人员都应该向自己询问有关iOS 12的七个重要问题。当然,这些问题还附带七个非常有用的答案。 根据您要发送的通知的内容,将通知分组是一个不错的选择。 在一个地方允许访问一组通知会非常方便。 例如,体育赛事的当天消息,突发新闻和行进日通知可以被认为非常及时并且对客户有用。 如果应用程序发送不同类型的通知(教育,交易和促销),它们也可能是一个很好的工具。 通过这些特定类别将通知分组-而不是通过应用程序将它们全部分组-可使读者更轻松地查看和参与他们最关心的内容。 分组通知易于在iOS 12中使用,Urban Airship使得更容易开始使用自定义分组发送通知。 线程ID是一个简单的字段,用于确定通知的分组。 该ID与消息有效负载一起发送,因此您可以即时选择要使用的线程ID(以及如何对通知进行分组),而无需进行开发工作。 随着通知管理的更改以及用户对通知显示方式的增强控制,必须确保用户了解选择推送通知如何使他们受益。 如果还没有,请明确说明应用程序消息传递的价值主张,并确保您始终如一地传递消息。 通过应用内自动化和消息中心,可以对用户进行安静通知和重要通知的教育,使任何品牌都可以创建无缝的入职体验。 可以先在应用商店说明中下载应用,再在应用入门材料中完成此操作,并且-对于那些下载了该应用但尚未选择接收推送通知的用户-带有应用内消息。 借助In-App Automation,营销人员可以通过让他们知道他们可以从该应用程序中期望什么类型的通知,来创建带有自定义内容的消息,以针对未选择推送通知的用户。 两个词:引人注目的信息。 随着对授权的新更改以及用于安静或突出显示通知的选项,每条消息都变得更加重要。 营销人员可以采取多种措施使他们的通知更具吸引力,包括: 建立何时和为何发送每条消息的管理策略。 使用表情符号或丰富的通知还可以帮助在通知中心内吸引用户的注意。 确保消息尽可能相关或针对用户。 iOS 12从“管理通知”和“临时授权”提示链接到您的应用程序的首选项中心。 首选项中心为可能想要突发新闻而不是体育内容的用户提供了更多控制权。 交易性的,但不是促销性的。 通过允许用户提供他们的首选项,您可以阻止他们整体上退出您的通知。 首先,询问您将定期发送哪些内容。 例如,新闻或体育应用程序在喜好中心可能需要比乘车共享应用程序更多的通知类别。 […]

WWDC18 KeyNote — iOS 12정리(第2部分)

Siri 세계하고하고하고하고에에에하하하하하하하iri iri iri iri iri iri iri iri iri iri iri iri iri iri iri iri iri iri。 중에cut많은cut cut cut 快捷键 이능능새있습니다。 请勿打扰(방해금지) 。싶싶싶끔。수메시들을들을들을많으실많으실많으실많으실많으실많으실많으실많으실많으실많으실많으실많으실많으실많으실많으실겁니많으실많으실겁니。 Bed 请勿在就寝时间打扰 이했습니기능을했습니다。 。사진과이보인다고다。 检测时间 Screen Time的屏幕 快照 。 용자는용자는iPhone용자는iPad됩니됩니다。 iMessage的 舌头检测 이입니기입니다。 Animoji가아래와사진을스있습니다。 FaceTime和 Group FaceTime一起使用32位主题的列表。 在Group FaceTime上进行的下载。 。있습니있습니다。 (59:15〜1:02:15) 하여하여WWDC18발표한iOS 12봤습니봤습니다。 。능들트트트트트트트트트。 。리이기능들을다써다느낌입니다。 WWDC18 KeyNote – iOS […]

iOS开发课程:通知

什么是通知中心? 如何观察键盘的出现? 如何创建自己的通知? 让我们看看如何在iOS中使用通知。 对象在通知中心注册,以使用addObserver(_:selector:name:object:)或addObserver(forName:object:queue:using:)方法接收通知( NSNotification对象)。 当对象将自己添加为观察者时,它指定应接收的通知。 因此,对象可能会多次调用此方法,以便将自己注册为多个不同通知的观察者。 每个正在运行的应用程序都有一个default通知中心,您可以创建新的通知中心来组织特定上下文中的通信。 通知中心只能在单个程序中传递通知; 如果要向其他进程发布通知或从其他进程接收通知,请改用DistributedNotificationCenter 。 阅读有关Apple Developer的更多信息 让我们创建Single View操场并添加第一个观察者。 NotificationCenter addObserver 该代码有什么作用? 将自身(MyViewController)实例设置为观察者 将私有函数appDidBecomeActive定义为观察者配置的选择器 appDidBecomeActive每次您的应用程序变为活动状态时运行 在通知部分阅读更多 好吧,让我们成为键盘观察者。 将Playground代码更改为以下代码。 键盘观察 运行游乐场。 点按到textField 查看控制台输出: 键盘将显示 点按按钮 查看控制台输出: 键盘会隐藏 因此,现在我们有了两个对象的通知对象,其中都包含有关键盘矩形的信息。 我们还能做些什么? 尝试为UIApplication.keyboardDidShowNotification和UIApplication.keyboardDidHideNotification添加观察器功能,并在控制台中查看区别。 通知包含名称,对象和可选字典,并由NotificationCenter或DistributedNotificationCenter实例广播到该NotificationCenter 。 名称是标识通知的标签。 该对象是通知的发布者想要发送给该通知的观察者的任何对象(通常是发布通知的对象)。 词典存储其他相关对象(如果有)。 NSNotification对象是不可变的。 通常,您通常不直接创建自己的通知,而是调用NotificationCenter方法post(name:object:)和post(name:object:userInfo:) 。 重要 基金会框架的Swift覆盖层提供了Notification结构,该结构与NSNotification类桥接。 有关值类型的更多信息,请参阅结合使用Swift和Cocoa和Objective-C(Swift 4.1)中的Cocoa框架。 阅读有关Apple Developer的更多信息 让我们看看如何创建一个新的通知名称并在项目中使用它。 将Playground代码更改为以下代码。 跑操场 点按按钮 查看结果-UITextField现在是“第一响应者”。 […]

场景之间的数据传输-iOS App

这个主题对我和您都很重要,因为使用应用程序时,场景之间的数据传输一直在发生,因此我们必须确保一定要学习好。 在我的示例中,我将使用segue将数据发送到下一个场景,当涉及到返回上一个场景时,我将使用通知。 今天的挑战是创建一个列表,列表的数据将发送到下一个场景,并且有一个编辑场景,如果我们更改列表的内容,前一个场景的数据也会被更改。 以下是我通过segue将数据发送到下一场景的核心代码 覆盖func prepare(对于segue:UIStoryboardSegue,发件人:AnyObject?){//为segue准备数据 让destination = segue.destinationViewController为! DetailViewController //设置segue的目标控制器 如果segue.identifier ==“ lover1Segue” {//考虑我正在使用哪个segue destination.loverId = loverA.id //将数据发送到目标场景 destination.loverName = loverA.name destination.loverCons = loverA.constellation destination.loverImageName = loverA.photoName } } @IBAction func lover1Act(_ sender:AnyObject){ self.performSegue(withIdentifier:“ lover1Segue”,发送者:nil)//执行segue } 以下是我的核心代码,用于通过通知将数据发送回上一个场景 起始场景: func updateData(_ sender:AnyObject){ 让notiName = Notification.Name(“ updateData”)//定义通知的名称 NotificationCenter.default.post(名称:notiName,对象:nil,userInfo:[“ loverId”:self.loverId,“ loverName”:self.nameTxt.text!,“ loverCons”:self.consTxt.text!,“ loverImageName” :loverImageName])//发送通知 navigationController?.popViewController(animated:true)//将导航控制器弹出回到上一个场景 } 目的地场景: […]