swift 中如何在NotificationService中进行混编

最近项目在接入个推推送时,由于项目使用的是swift编写的,然后个推的SDK都是OC编写的,所以在接入的过程中,难免会遇到混编的知识,所以在这里总结下接入的注意事项,做个记录。具体接入步骤如下:

  • 1.创建NotificationService,具体操作如下图

截屏2021-08-11 下午2.01.34.png

截屏2021-08-11 下午2.04.27.png

  • 2.将下载好的三方库导入项目中,具体操作如下图

截屏2021-08-11 下午2.07.02.png

  • 3.创建桥接文件,并配置桥接文件路径,具体操作如下图

创建桥接文件swiftDemo-NotificationService-swift-Bridging-Header

截屏2021-08-11 下午2.09.24.png

配置配置项

截屏2021-08-11 下午2.11.52.png

  • 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)
        })
    }
复制代码

猜你喜欢

转载自juejin.im/post/7016583784724168712