如何实现IOS APP被杀掉后依然可以接收到个推消息通知

这篇具有很好参考价值的文章主要介绍了如何实现IOS APP被杀掉后依然可以接收到个推消息通知。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

背景

项目已经集成了个推SDK,但是在离线场景下无法收到推送消息,离线场景主要分2种情况,一种是用户将APP切换到了后台,一种是用户将APP杀掉了。
针对场景一:我们可以将APP支持后台运行,比如项目中使用到了后台持续定位功能,后台音频等(Xcode中可以查看支持哪些后台模式),可以增加接收到离线通知的概率。

如何实现IOS APP被杀掉后依然可以接收到个推消息通知,ios,个推,Swift,Notification,Extension
针对场景二:我们需要集成NotificationServiceExtension,下面就主要介绍一下如何集成

新增NotificationServiceExtension

在XCode中,按照以下步骤操作

新增一个target

如何实现IOS APP被杀掉后依然可以接收到个推消息通知,ios,个推,Swift,Notification,Extension
如何实现IOS APP被杀掉后依然可以接收到个推消息通知,ios,个推,Swift,Notification,Extension

配置好NotificationService的包名和签名

Bundle一般就用自己APP的包名加上NotificationService,如 com.edenwang.www.NotificationService

将下载的个推SDK中的NotificationService代码复制到项目中

个推SDK下载地址

https://docs.getui.com/download.html

如何实现IOS APP被杀掉后依然可以接收到个推消息通知,ios,个推,Swift,Notification,Extension

解压开找到NotificationService

如何实现IOS APP被杀掉后依然可以接收到个推消息通知,ios,个推,Swift,Notification,Extension

将压缩包中NotificationService.swift文件内容替换项目中的NotificationService.swift

Info.plist和NotificationService.entitlements

如何实现IOS APP被杀掉后依然可以接收到个推消息通知,ios,个推,Swift,Notification,Extension
记得将NotificationService.entitlements中包名更新成自己的

新建一个空的OC文件

Empty.m是新建的一个空的Objective-C文件,这个文件不能少。这个是咨询个推的技术人员后才得知的,说是混编的问题,如果是Swift项目需要加一个OC文件,如果是OC项目需要加一个空的Swift文件。可以查看下载的个推SDK中其他方式的实现作对比。

其他文件复制

复制NotificationService-Bridging-Header.h

打包测试

为了快速测试,需要将个推的后台运行临时关掉 GeTuiSdk.runBackgroundEnable(false)
安装到手机上后,将APP退出到后台后,稍等片刻,在个推控制台上查询当前设备的CID,检查CID的状态是否为离线,如果已经为离线了,可以通过个推的控制台推送测试消息,然后观察手机上收到的消息是否包含[Success]字符,如果有,说明大功告成了。

  override func didReceive(_ request: UNNotificationRequest, withContentHandler contentHandler: @escaping (UNNotificationContent) -> Void) {
    self.contentHandler = contentHandler
    guard let bestAttemptContent = request.content.mutableCopy() as? UNMutableNotificationContent else { return }
   
    // [ 测试代码 ] TODO:语音播报
    let cnt: Double = 123 //读取apns中播报信息
    let name = ApnsHelper.makeMp3FromExt(cnt)
    let sound = UNNotificationSound(named: UNNotificationSoundName(name))
    bestAttemptContent.sound = sound
    
    // [ 测试代码 ] TODO: 用户可以在这里处理通知样式的修改,eg:修改标题,开发阶段可以用于判断是否运行通知扩展
//    bestAttemptContent.title = "\(bestAttemptContent.title) [WillIn]"
    
    // [ 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://www.toymoban.com/news/detail-814691.html

到了这里,关于如何实现IOS APP被杀掉后依然可以接收到个推消息通知的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • iOS APP启动广告实现方式 与 APP唤端调用

    APP启动广告功能实现要从2个方面思考 一是UI方案,怎样处理广告页与主页之间的切换方式。 二是广告页展示时机,是使用后台实时广告数据还是使用本地缓存广告数据。后台数据方式获取广告最新但是用户要等待后台返回数据后才能展示,增加用户等待时间。使用本地缓存

    2024年02月01日
    浏览(31)
  • 如何把小程序游戏运行到自有App中?(IOS篇)

    千呼万唤始出来!FinClip 终于支持小游戏了。 我们团队算是 FinClip 的老用户了,年初就向官方提出了希望 FinClip 支持微信小游戏的建议。随着前段时间 “羊了个羊” 微信小游戏的爆火,官方也把小游戏支持提上了日程,近期官方开启了公测通道。我们用周末用小游戏进行了

    2023年04月08日
    浏览(32)
  • 如何将你的iOS应用成功上架App Store(图文详解)

    1、苹果开发者账号(如还没账号先申请- 苹果开发者账号申请教程) 2、开发好的APP 通过本篇教程,可以学习到ios证书申请和打包ipa上传到appstoreconnect.apple.com进行TestFlight测试然后提交审核的完整流程! 上架App Store审核分7步进行。 1、安装iOS上架辅助软件Appuploader 2、申请iO

    2024年02月16日
    浏览(40)
  • 无ios开发者账号如何打包自己的ios 版本app(需要有苹果手机或者mac电脑)

    1.注册苹果账号 https://developer.apple.com/account 2.登录开发者中心 出现协议弹框 同意即可 3.下载Appuploader http://www.applicationloader.net/ 4.打开压缩包内exe文件 5.登录刚刚申请的苹果账号 ,要选未支付688(正式的开发者账号每年要支付688) 6.进入证书管理 7.进入证书管理,创建证书,

    2024年02月09日
    浏览(37)
  • flutter App如何跳转小程序如何调用微信sdk(ios/andriod)

            实不相瞒,这一块着实耗费了我很大的时间,因为没有太多ios和andriod原生开发的知识储备,在很多方面就会踩不少坑,这里总结几种app跳转微信小程序的方式 第一种方案:使用明文URL Scheme 这是最简单!不需要太多配置的方式!但是这里有一个坑就是对于ios是无痛拉

    2024年03月14日
    浏览(50)
  • 直播软件app开发:如何开发一个可以免费打扑克的直播应用?

    作为一个技术开发人员,我深知直播软件app开发的重要性。在这个数字化时代,越来越多的人选择使用直播软件来分享自己的生活和与朋友互动。而随着技术的发展,直播软件也不断更新和改进,为用户提供更好的体验和功能。 对于开发者来说,以视频直播app源码为基础进行

    2024年02月16日
    浏览(45)
  • 小程序中使用scroll-view组件,内容高度未超过容器高度时依然可以上下滑动小段距离的问题

    解决办法: 如下代码:检查下scroll-view组件是否设置了上下padding 或者 scroll-view的父盒子 view class=“home-page” … /view 设置了上下padding,如果设置了,去掉就可以解决问题。 (完)

    2024年02月08日
    浏览(31)
  • 如何建设一个用于编译 iOS App 的 macOS 云服务器集群?

    作者:京东零售 叶萌 现代软件开发一般会借助 CI/CD 来提升代码质量、加快发版速度、自动化重复的事情,iOS App 只能在 mac 机器上编译,CI/CD 工具因此需要有一个 macOS 云服务器集群来执行 iOS App 的编译。 今天就来谈谈如何建设 macOS 云服务器集群 最简单的方式就是购买一批

    2023年04月25日
    浏览(34)
  • 前端基于uniapp[uniPush]实现APP消息推送(安卓、IOS)

    前提概述:此文章都是基于uniapp中uniPush2实现的在线、离线推送 登录开发者中心先填写好项目信息以及配置厂商 在manifest.json文件中勾选推送模块 打包自定义基座 在前端项目中创建云函数(此云函数的作用是接受后台发送的消息模板,解析出来后,发送给到uniapp后台,以此触

    2024年02月09日
    浏览(33)
  • Windows如何查询软件使用的端口号?树莓派怎么查询怎么杀掉进程?

    目录 一、windows根据PID查看软件使用端口 二、封端口 三、树莓派查PID、杀掉进程 很多软件有后门,为了网络安全,需要查看某些软件的端口号,然后封锁他,以防止他做坏事! 另外,树莓派软件一直全屏无法关闭,需要使用命令行kill掉 win7为例 1、首先查看程序的PID号,打

    2024年02月07日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包