当前位置: 首页 > news >正文

MobPush iOS SDK iOS实时活动

开发工具:Xcode 功能需要: SwiftUI实现UI页面,iOS16.1以上系统使用

功能使用: 需应用为启动状态

功能说明

iOS16.1 系统支持实时活动功能,可以在锁定屏幕上实时获知各种事情的进展,MobPushSDK iOS 4.0.3版本已完成适配,可根据文档对应使用。

集成步骤

添加依赖库

ActivityKit.farework
SwiftUI.farework

afbfdd7bbcea26733d803dff7c21d10d.JPG

配置⼯程⽀持 LiveActivity

在主⼯程的 Info.plist ⽂件中添加⼀个键值对,key 为 NSSupportsLiveActivities,value 为 YES

image.png

添加实时活动扩展

6222eaba0b0a93c4e523fa4a52f9b1b5.JPG

ea12cbf09bb713fb602ef8160fad2f6e.JPG

添加扩展项目依赖库

11e648e0ce5d0755dff35c3d9208a24c.JPG

UI实现

实时活动UI需开发者自行实现,可参考Demo处理,注意需将扩展的UI组件引用到主项目上

ce274c9739c7e000e4abc3a2b99225b2.JPG

296f9712c9ed9fc8b4d34f61a288db27.JPG

实时活动API

上传实时活动token registerLiveActivityWithID()

示例代码:

/*!* @abstract 注册LiveActivity并上报PushToken* 在PushToken更新时,需同步调用该接口* 在LiveActivity结束时,需同步调用该接口,PushToken为nil** @param liveActivityId 标识某一个LiveActivity* @param pushToken 对应LiveActivity的PushToken* @param handler 结果回调*/[MobPush registerLiveActivityWithID:@"mpLiveActivity"pushToken:tokencompletion:^(NSError *error) {if (error) {NSLog(@"Register LiveActivity Failed: %@", error.localizedDescription);}}];}

活动开始startActivity()

示例代码:

static public func startActivity(pushTokenUpdate:@escaping (Bool, Data?)->Void) {guard ActivityAuthorizationInfo().areActivitiesEnabled else {//不可用pushTokenUpdate(false, nil)//监听可用状态
//            for await enablment in ActivityAuthorizationInfo().activityEnablementUpdates {
//                print("Activity AuthorizationInfo change to (enablment)")
//            }return}endPreActivity()let state = HeartNoteLiveActivitsLiveAttributes.ContentState(prograssState: .Car)let attri = HeartNoteLiveActivitsLiveAttributes(name: "MPLiveActivities")do {let current = try Activity.request(attributes: attri, contentState: state, pushType: .token)Task {for await tokenData in current.pushTokenUpdates {//监听token更新 注意线程pushTokenUpdate(true, tokenData)}}Task {for await state in current.contentStateUpdates {//监听state状态 开发者可自行编写回调监听print("1content state update: tip=(state.prograssState)")}}Task {//监听activity状态 开发者可自行编写回调监听for await state in current.activityStateUpdates {print("activity state update: tip=(state) id:(current.id)")}}} catch(let error) {print("error=",error)pushTokenUpdate(false, nil)}}

更新Activity状态updateActivityState()

static public func updateActivityState(_ value: Int) {Task {guard let current = Activity<HeartNoteLiveActivitsLiveAttributes>.activities.first else {return}let state = HeartNoteLiveActivitsLiveAttributes.ContentState(prograssState: PrograssState(rawValue: value) ?? .Arrived)let alertConfiguration = AlertConfiguration(title: "Delivery Update ", body: "Delivery Update State to (state.prograssState.rawValue)", sound: .default)await current.update(using: state, alertConfiguration: alertConfiguration)}}

关闭Activity状态endPreActivity()

//建议关闭应用的时候要关闭 不然下次启动就脱离控制了static public func endPreActivity() {let activities = Activity<HeartNoteLiveActivitsLiveAttributes>.activities.filter { act inreturn act.activityState == .active}guard activities.count > 0 else { return }for item in activities {Task {
//                print("end activity (item.id)")await item.end(dismissalPolicy:.immediate)}}}

相关文章:

MobPush iOS SDK iOS实时活动

开发工具&#xff1a;Xcode 功能需要: SwiftUI实现UI页面&#xff0c;iOS16.1以上系统使用 功能使用: 需应用为启动状态 功能说明 iOS16.1 系统支持实时活动功能&#xff0c;可以在锁定屏幕上实时获知各种事情的进展&#xff0c;MobPushSDK iOS 4.0.3版本已完成适配&#xf…...

c++开发模式,组合模式

组合模式&#xff0c;顾名思义&#xff0c;通过组合关系定义类间的关联关系&#xff0c;实现了将对象组合成树形结构&#xff0c;最终实现类的复用。可能是由于设计模式看的多了&#xff0c;初看组合模式的类图&#xff0c;感觉和装饰者模式类图很相似&#xff0c;都是使用继承…...

【GITHUB】FlipIt – Windows的开源翻页时钟

FlipIt 是一款免费开源的翻页时钟应用&#xff0c;专为 Windows 平台设计。该应用灵感来源于备受喜爱的老牌翻页时钟应用 Fliqlo&#xff0c;后者被公认为经典的翻页时钟屏保。然而&#xff0c;由于 Fliqlo 是基于 Flash 技术开发的&#xff0c;随着微软最近正式禁用 Flash&…...

基于 Flink Paimon 实现 Streaming Warehouse 数据一致性管理

摘要&#xff1a;本文整理自字节跳动基础架构工程师李明&#xff0c;在 Apache Paimon Meetup 的分享。本篇内容主要分为四个部分&#xff1a; 背景 方案设计 当前进展 未来规划 点击查看原文视频 & 演讲PPT 一、背景 ​ 早期的数仓生产体系主要以离线数仓为主&#xf…...

云游戏App简记

注&#xff1a;在安卓手机端使用。其他端不做分析。 App手机游戏PC和主机游戏免费时长&#xff08;手机游戏&#xff09;是否排队备注咪咕快游支持。数量一般&#xff0c;和腾讯还有合作&#xff0c;有不少腾讯的游戏支持每日登录签到送30-60分钟&#xff0c;当天失效&#xf…...

ChatGPT已打破图灵测试,新的测试方法在路上

生信麻瓜的 ChatGPT 4.0 初体验 偷个懒&#xff0c;用ChatGPT 帮我写段生物信息代码 代码看不懂&#xff1f;ChatGPT 帮你解释&#xff0c;详细到爆&#xff01; 如果 ChatGPT 给出的的代码不太完善&#xff0c;如何请他一步步改好&#xff1f; 全球最佳的人工智能系统可以通过…...

Flask学习笔记_异步CMS(五)

Flask学习笔记_异步CMS&#xff08;五&#xff09; 1.环境1.安装nvm2.安装node 2.使用vue-cli创建项目3.安装相关插件4.后台CMS开发1.页面结构1.app.vue搭建结构2.element-icon组件的使用3.iconfont组件的使用 2.使用[Vue-router](https://router.vuejs.org/installation.html)…...

争夺年度智能汽车「中间件」方案提供商TOP10,谁率先入围

进入2023年&#xff0c;整车电子架构升级进入新周期&#xff0c;无论是智能驾驶、智能座舱、车身控制还是信息网络安全&#xff0c;软件赋能仍是行业的主旋律。 作为智能汽车赛道的第三方研究咨询机构&#xff0c;高工智能汽车研究院持续帮助车企、投资机构挖掘具备核心竞争力…...

【Spring Cloud一】微服务基本知识

系列文章目录 微服务基本知识 系列文章目录前言一、系统架构的演变1.1单体架构1.2分层架构1.3分布式架构1.4微服务架构1.5分布式、SOA、微服务的异同点 二、CAP原则三、RESTfulRESTful的核心概念&#xff1a; 四、共识算法 前言 在实际项目开发过程中&#xff0c;目前负责开发…...

swift - 如何在数组大小更改后刷新 ForEach 显示元素的数量(SwiftUI、Xcode 11 Beta 5)

我正在尝试实现一个 View &#xff0c;该 View 可以在内容数组的大小发生变化时更改显示项目的数量(由 ForEach 循环创建)&#xff0c;就像购物应用程序可能会在用户下拉刷新后更改其可用项目的数量一样 这是我到目前为止尝试过的一些代码。如果我没记错的话&#xff0c;这些适…...

编程导航算法村第七关 |二叉树的遍历

编程导航算法村第七关 | 二叉树的遍历 前序遍历&#xff08;递归&#xff09; public List<Integer> preorderTraversal(TreeNode root) {ArrayList<Integer> result new ArrayList<Integer>();preorder(root, result);return result;}public void preorde…...

【docker】docker-compose安装带ui页面的kafka集群

docker-compose 安装带kafka-ui 的kafka集群 在日常的工作当中&#xff0c;kafka集群作为常用的中间件&#xff0c;其搭建过程略显繁琐&#xff0c;需要配置的文件颇多&#xff0c;为了方便各位初学者快速体验kafka的魅力&#xff0c;本文采取一键式安装kafka-3.3.1&#xff0…...

java实现多级菜单

/** * 查询所有菜单 */ public BaseWebResponse<Object> getAllMenus() { List<SystemMenuInfo> systemMenuInfoList menuInfoMapper.getAllMenus(); List<SystemMenuInfo> menuTree buildMenuTree(systemMenuInfoList); return setResultSuccess(&q…...

HTML中元素和标签有什么区别?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 标签&#xff08;Tag&#xff09;⭐元素&#xff08;Element&#xff09;⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&a…...

android 如何分析应用的内存(十三)——perfetto

android 如何分析应用的内存&#xff08;十三&#xff09; 本篇文章是native内存的最后一篇文章——perfetto perfetto简介 从2018年始&#xff0c;android开发者峰会正式推出perfetto工具。从此perfetto成为安卓最重要的工具之一。在2018年以前&#xff0c;android使用syst…...

Chapter20 音乐

目录 音乐 琴键 哆来咪 振动与调式 利萨如曲线 和声与音调与和弦 音乐 在音乐理论中&#xff0c;一个八音度&#xff08;octave&#xff09;是一个频率范围相差二倍的区间。在大多数西洋乐器中&#xff0c;一个八音度被分为12个频率比相等的半音程&#xff08;semitone&a…...

详解Nodejs中的模块化

Nodejs是一个基于Chrome V8引擎的JavaScript运行时环境&#xff0c;它允许开发者使用JavaScript在服务器端运行代码。在Nodejs中&#xff0c;模块化是一种组织和重用代码的重要方式。模块化允许我们将代码拆分成小块&#xff0c;使得代码结构更清晰、易于维护&#xff0c;并促进…...

debug思路 - maven构建报错

问题&#xff1a;maven面板中&#xff0c;进行compile、deploy操作时报错。 debug步骤&#xff1a; 1、鼠标右键选择“修改运行配置”。在运行命令中添加参数-X&#xff0c;用于产生执行调试输出。例如&#xff1a;compile -f -X pom.xml。 2、再次进行compile、deploy操作&…...

DSP学习笔记

间接寻址&#xff08;通过放在辅助寄存器里面&#xff0c;可以对地址包括很多操作&#xff0c;1&#xff0c;-1&#xff0c;/-平移量&#xff0c;辅助寄存器内容的修改是在ARAU0和ARAU1中完成的。分为单操作数和双操作数&#xff0c;有很多模式在ARAU。单操作数间接寻址&#x…...

Java中的Apache Commons Math是什么?

Java中的Apache Commons Math是一个开源的数学库&#xff0c;它提供了许多常用的数学函数和算法&#xff0c;例如线性代数、微积分、统计、插值、拟合等。这个库对于需要处理大量数据的开发者来说非常有用&#xff0c;因为它可以大大简化代码并提高效率。 让我们从新手的角度来…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度​

一、引言&#xff1a;多云环境的技术复杂性本质​​ 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时&#xff0c;​​基础设施的技术债呈现指数级积累​​。网络连接、身份认证、成本管理这三大核心挑战相互嵌套&#xff1a;跨云网络构建数据…...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

java_网络服务相关_gateway_nacos_feign区别联系

1. spring-cloud-starter-gateway 作用&#xff1a;作为微服务架构的网关&#xff0c;统一入口&#xff0c;处理所有外部请求。 核心能力&#xff1a; 路由转发&#xff08;基于路径、服务名等&#xff09;过滤器&#xff08;鉴权、限流、日志、Header 处理&#xff09;支持负…...

mongodb源码分析session执行handleRequest命令find过程

mongo/transport/service_state_machine.cpp已经分析startSession创建ASIOSession过程&#xff0c;并且验证connection是否超过限制ASIOSession和connection是循环接受客户端命令&#xff0c;把数据流转换成Message&#xff0c;状态转变流程是&#xff1a;State::Created 》 St…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

最新SpringBoot+SpringCloud+Nacos微服务框架分享

文章目录 前言一、服务规划二、架构核心1.cloud的pom2.gateway的异常handler3.gateway的filter4、admin的pom5、admin的登录核心 三、code-helper分享总结 前言 最近有个活蛮赶的&#xff0c;根据Excel列的需求预估的工时直接打骨折&#xff0c;不要问我为什么&#xff0c;主要…...

使用van-uploader 的UI组件,结合vue2如何实现图片上传组件的封装

以下是基于 vant-ui&#xff08;适配 Vue2 版本 &#xff09;实现截图中照片上传预览、删除功能&#xff0c;并封装成可复用组件的完整代码&#xff0c;包含样式和逻辑实现&#xff0c;可直接在 Vue2 项目中使用&#xff1a; 1. 封装的图片上传组件 ImageUploader.vue <te…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

JVM暂停(Stop-The-World,STW)的原因分类及对应排查方案

JVM暂停(Stop-The-World,STW)的完整原因分类及对应排查方案,结合JVM运行机制和常见故障场景整理而成: 一、GC相关暂停​​ 1. ​​安全点(Safepoint)阻塞​​ ​​现象​​:JVM暂停但无GC日志,日志显示No GCs detected。​​原因​​:JVM等待所有线程进入安全点(如…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...