当前位置: 首页 > 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)}}}
http://www.lryc.cn/news/109497.html

相关文章:

  • c++开发模式,组合模式
  • 【GITHUB】FlipIt – Windows的开源翻页时钟
  • 基于 Flink Paimon 实现 Streaming Warehouse 数据一致性管理
  • 云游戏App简记
  • ChatGPT已打破图灵测试,新的测试方法在路上
  • Flask学习笔记_异步CMS(五)
  • 争夺年度智能汽车「中间件」方案提供商TOP10,谁率先入围
  • 【Spring Cloud一】微服务基本知识
  • swift - 如何在数组大小更改后刷新 ForEach 显示元素的数量(SwiftUI、Xcode 11 Beta 5)
  • 编程导航算法村第七关 |二叉树的遍历
  • 【docker】docker-compose安装带ui页面的kafka集群
  • java实现多级菜单
  • HTML中元素和标签有什么区别?
  • android 如何分析应用的内存(十三)——perfetto
  • Chapter20 音乐
  • 详解Nodejs中的模块化
  • debug思路 - maven构建报错
  • DSP学习笔记
  • Java中的Apache Commons Math是什么?
  • 规划路线(微信小程序、H5)
  • 【CSS】视频文字特效
  • linux-MySQL的数据目录
  • AI绘图实战(十二):让AI设计LOGO/图标/标识 | Stable Diffusion成为设计师生产力工具
  • 机器视觉系统设计:基础知识
  • C# Blazor 学习笔记(11):路由跳转和信息传值
  • Centos 7 安装 Python 时 zlib not available 错误解决
  • python sqllite基本操作
  • 记录--基于css3写出的流光登录(注释超详细!)
  • 【测试设计】性能测试工具选择:wrk?jmeter?locust?还是LR?
  • 为什么升级JDK 11后堆外内存使用增长了?