如何在您的应用程序中集成iOS 10 Rich Push Notifications

毫无疑问,随着丰富的推送通知在iOS 10中的到来,应用程序营销的方式已经改变。 全球的营销人员正在利用丰富的推动力来附加照片,GIF,声音和视频内容,从而以更具交互性的方式吸引用户。

之前,您必须点击通知以打开应用程序或URL,或者必须滑动通知以在手机中将其关闭。 iOS 10中的Rich Push通知使用户能够从通知中心直接在Push中签出Rich Media。 。 。 甚至锁定屏幕。 这不仅使推送通知不那么烦人,而且还为用户提供了非常流畅和更好的体验。 让我们开始在iOS应用中进行集成的过程:

转到项目目标,然后单击“ 功能”,并确保已启用“推送通知”,并且在“ 后台模式 ”下选择了“远程通知”:

转到AppDelegate.swift并在appdelegate中导入UserNotification.framework并将此代码添加到didFinishLaunchingWithOptions中:

 UNUserNotificationCenter.current().delegate = self UNUserNotificationCenter.current().requestAuthorization(options: [.sound, .alert, .badge]) {(granted, error) in // actions based on whether notifications were authorized or not if (granted) { UIApplication.shared.registerForRemoteNotifications() } } 

您可以通过Notification Service Extension启用Rich Push Notification:

在您的项目中创建一个Notification Service Extension。 为此,在Xcode中,选择File-> New-> Target,然后选择Notification Service Extension模板。

添加新目标后,将有一个名为NotificationService.swift的新文件。

注意:Notification Service Extension具有单独的Apple App ID和Provisioning配置文件!
请注意,通知扩展名具有自己的Bundle ID(例如:com.shephertz.demo.NotificationService)以及其自己的 Apple App ID Provisioning配置文件 ,必须分别在Apple Developer Portal中进行设置。

打开此类,并在did Receive(:with Content Handler 🙂委托方法中编写此代码,以为通知中的所有媒体提供服务。

此方法中的代码如下所示:

 self.contentHandler = contentHandler bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContetnt)  self.contentHandler = contentHandler bestAttemptContent = (request.content.mutableCopy() as? UNMutableNotificationContetnt) If let bestAttemptContent = bestAttemptContent { let userInfo = bestAttempContent.userInfo If let userString = userInfo[“attachment-url”], let fileUrl = URL(string: urlString as! String){ URLSession.shared.downloadTask(with: fileUrl) { (location, response, error) in If let location = location { URLSession.shared.downloadTask(with: fileUrl) { (location, response, error) in If let location = location {  URLSession.shared.downloadTask(with: fileUrl) { (location, response, error) in If let location = location { let tmpDirectory = NSTemporaryDirectory() let tmpFile = “file:”.appending(tmpDirectory).appending(fileUrl.lastPathComponent) let tmpUrl = URL(string: tmpFile)! try! Filemanager.default.moveItem(at: location, to: tmpUrl) let tmpDirectory = NSTemporaryDirectory() let tmpFile = “file:”.appending(tmpDirectory).appending(fileUrl.lastPathComponent) let tmpUrl = URL(string: tmpFile)! try! Filemanager.default.moveItem(at: location, to: tmpUrl)  let tmpDirectory = NSTemporaryDirectory() let tmpFile = “file:”.appending(tmpDirectory).appending(fileUrl.lastPathComponent) let tmpUrl = URL(string: tmpFile)! try! Filemanager.default.moveItem(at: location, to: tmpUrl) If let attachment = try? UNNotificationAttachment(identifier: “”, url: tmpUrl) { self.bestAttemptContent?.attachments = [attachment] } } If let attachment = try? UNNotificationAttachment(identifier: “”, url: tmpUrl) { self.bestAttemptContent?.attachments = [attachment] } }  If let attachment = try? UNNotificationAttachment(identifier: “”, url: tmpUrl) { self.bestAttemptContent?.attachments = [attachment] } } self.contentHandler!(self.bestAttemptContent!) }.resume() } } self.contentHandler!(self.bestAttemptContent!) }.resume() } } 

attachment-url”是一个自选密钥,可以是任何东西。 重要的部分是在最终代码中使用相同的密钥。

此过程将只是从服务器以扩展名.tmp的临时文件下载媒体,将媒体保存到磁盘,将媒体路径添加到UNNotificationAttachment,然后将其发送回已编辑的通知。

调用此委托方法执行了Receive(:with Content Handler 🙂时有两种情况。 如果两个条件都不匹配,则通知用作简单内容,不用作丰富推送通知,这些条件是:

  1. 远程通知配置为显示警报
  2. 远程通知的aps词典包含可变内容密钥应为1

应用程式传输安全性

自iOS 9以来,应用程序传输安全性(ATS)就已经存在,通过将以下代码段添加到Notification Service Extension的 Info.plist中,始终很容易退出ATS。

HTTP URL:
除非在plist中明确指定,否则iOS 10不支持HTTP URL。 您必须在Notification Service Extension的Info.plist中包括“应用程序传输安全设置字典”,并在此设置中将“允许任意加载”设置为YES。

另请参阅: 丰富的推送通知可以最大限度地提高转化的5种方法

在iOS 10中使用App42发送丰富的推送:

  1. 登录到AppHQ并转到统一通知
  2. 点击推送通知,然后点击发送推送
  3. 选择高级
  4. 选择任何媒体类型
  5. 为iOS 10转换选择

现在,您可以在iOS 10中发送Rich Push Notification 。 如有任何疑问或困惑,请通过support@shephertz.com与我们联系 ,我们将竭诚为您服务。