美文网首页
iOS 10多媒体推送

iOS 10多媒体推送

作者: 低调的前行者灬 | 来源:发表于2019-04-30 17:31 被阅读0次

    前言

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

    正文

    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多媒体推送

          本文链接:https://www.haomeiwen.com/subject/hkumnqtx.html