本地通知的通知服务扩展

9
系统是否会加载通知服务扩展并在iOS 10中调用其didReceive(_:withContentHandler:)以处理本地通知?
如果是,我们该如何实现?

http://www.appcoda.com/ios10-user-notifications-guide/ - Mitesh jadav
这里接受的答案似乎是错误的。 - Tom Hamming
4个回答

11

不可以。被接受的答案描述了通知内容扩展,允许你在展开的通知视图中呈现一个ViewController,并且适用于远程和本地通知。

通知服务扩展允许你更改通知的内容(附加图片等),但不支持本地通知。不过,你可以在显示本地通知的过程中附加图片。


1
你是否有文档或WWDC演讲链接可以证实这是不可能的? - Tom Hamming
抱歉,我不知道。这只是我的个人经验。 - Alastair

2

通知服务扩展是用于远程通知而不是本地通知。

根据苹果文档

UNNotificationServiceExtension是一个对象,可以在将远程通知传递给用户之前修改其内容。


1
您需要创建一个通知内容扩展程序来显示自定义的iOS10通知。在Xcode菜单栏中,选择文件->新建->目标。然后从列表中选择通知内容扩展程序。 enter image description here 输入相应的细节并点击完成。您将看到一个新的文件夹,其名称为您的扩展程序名称。在文件夹中,有三个文件:
  1. NotificationViewController:在这里,您可以设计自己的自定义界面并实现响应。

  2. MainStoryboard:您可以使用此文件设计自定义通知。

  3. Info.plist

在Info.plist文件中添加以下内容: enter image description here 这将是您在主项目中调度通知时使用的类别标识符。
let category = UNNotificationCategory(identifier: "myNotificationCategory", actions: [], intentIdentifiers:[], options: [])
            UNUserNotificationCenter.current().setNotificationCategories([category])
            content.categoryIdentifier = "myNotificationCategory"

您的 NotificationViewController 类应该类似于以下内容。
func didReceive(_ notification: UNNotification) {
        //change properties of notification here.
    }

    func didReceive(_ response: UNNotificationResponse, completionHandler completion: @escaping (UNNotificationContentExtensionResponseOption) -> Void) {
        //implement response logic here.
    }

有几个很好的在线教程可供参考。你可以在这里这里这里查看。 希望能帮到你。


2
我也想澄清一下问题,那就是你是否可以使用通知服务扩展来进行本地通知。嗯,是的,你可以。 - Morgz
@Morgz 我认为我们不能使用通知服务扩展来进行本地通知。 - nuynait

-1

本地通知也支持通知扩展。这里明确提到了。

UNNotificationContentExtension 一个为已发送的本地或远程通知呈现自定义界面的对象。


1
它与NotificationServiceExtension不同,但仍然有帮助。 - Arnaud

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接