swift 中如何在NotificationService中进行混编
最近项目在接入个推推送时,由于项目使用的是
swift
编写的,然后个推的SDK都是OC
编写的,所以在接入的过程中,难免会遇到混编的知识,所以在这里总结下接入的注意事项,做个记录。具体接入步骤如下:
1.创建
NotificationService
,具体操作如下图
2.将下载好的三方库导入项目中,具体操作如下图
3.创建桥接文件,并配置桥接文件路径,具体操作如下图
创建桥接文件swiftDemo-NotificationService-swift-Bridging-Header
配置配置项
4.在创建好的桥接文件中,导入项目中需要使用的OC的三方库的名称
#import <GTExtensionSDK/GeTuiExtSdk.h>复制代码
5.在需要使用的地方,直接调用即可
var contentHandler: ((UNNotificationContent) -> Void)? var bestAttemptContent: UNMutableNotificationContent? override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) { self.contentHandler = contentHandler guard let bestAttemptContent = request.content.mutableCopy() as? UNMutableNotificationContent else { return } // [ GTSDK ] 统计APNs到达情况和多媒体推送支持接口, 建议使用该接口 GeTuiExtSdk.handelNotificationServiceRequest(request, withAttachmentsComplete: { [weak self] (attachments: Array?, errors: Array?) in guard let handler = self?.contentHandler else { return } // [ 测试代码 ] TODO:日志打印,如果APNs处理有错误,可以在这里查看相关错误详情 // print("处理个推APNs展示遇到错误:\(String(describing: errors))") // [ 测试代码 ] TODO:用户可以在这里处理通知样式的修改,eg:修改标题,开发阶段可以用于判断是否运行通知扩展 // bestAttemptContent.title = "\(bestAttemptContent.title) [Success]" if let attachment = attachments as? [UNNotificationAttachment], !attachment.isEmpty { // 设置通知中的多媒体附件 bestAttemptContent.attachments = attachment } // 展示推送的回调处理需要放到个推回执完成的回调中 handler(bestAttemptContent) }) }
作者:卷耳朵
链接:https://juejin.cn/post/7016583784724168712