iOS 10多媒体推送

前言

本文只针对个推所做的总结,其他推送大同小异

正文

1.添加Notification Service Extension

选择File->New->Target->Notification Service Extension

image

选择Activate即可,如果没有弹出该选项框,需要自行添加相应的 scheme。
需要注意的点:

  • Extension 的 Bundle Identifier 不能和 Main Target(也就是你自己的 App Target)的 Bundle Identifier 相同,否则会报 BundeID 重复的错误。
  • Extension 的 Bundle Identifier 需要在 Main Target 的命名空间下,比如说 Main Target 的 BundleID 为 ent.getui.xxx,那么Extension的BundleID应该类似与ent.getui.xxx.yyy这样的格式。如果不这么做,会引起命名错误。

可以使用.NotificationService的格式

NotificationService的 Deployment Target要设置最低10.0

2.添加请求代码

之后项目中会多出一个文件夹NotificationService,其中包括一对关键文件
NotificationService.hNotificationService.m
.m中会默认有两个方法

- (void)didReceiveNotificationRequest:(UNNotificationRequest *)request withContentHandler:(void (^)(UNNotificationContent * _Nonnull))contentHandler {
    self.contentHandler = contentHandler;
    self.bestAttemptContent = [request.content mutableCopy];
    
    // Modify the notification content here...
    self.bestAttemptContent.title = [NSString stringWithFormat:@"%@ [modified]", self.bestAttemptContent.title];
    
    self.contentHandler(self.bestAttemptContent);
}
- (void)serviceExtensionTimeWillExpire {
    // Called just before the extension will be terminated by the system.
    // Use this as an opportunity to deliver your "best attempt" at modified content, otherwise the original push payload will be used.
    self.contentHandler(self.bestAttemptContent);
}

当多媒体消息到达客户端后会走第一个方法,可以在其中处理资源
但是如果处理时间过长,将会进入serviceExtensionTimeWillExpire方法进行最后的紧急处理。

NotificationService文件夹中的info.plist要添加App Transport Security Settings字典类型,并增加BOOL类型的Allow Arbitrary Loads设置为YES

你可能感兴趣的:(iOS 10多媒体推送)