http://www.pptjcw.com

MobPush iOS SDK iOS实时活动

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

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

    功能说明

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

    集成步骤 添加依赖库 ActivityKit.farework SwiftUI.farework

    afbfdd7bbcea26733d803dff7c21d10d.JPG

    afbfdd7bbcea26733d803dff7c21d10d.JPG

    配置⼯程⽀持 LiveActivity

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

    image.png

    image.png

    添加实时活动扩展

    6222eaba0b0a93c4e523fa4a52f9b1b5.JPG

    6222eaba0b0a93c4e523fa4a52f9b1b5.JPG

    ea12cbf09bb713fb602ef8160fad2f6e.JPG

    ea12cbf09bb713fb602ef8160fad2f6e.JPG

    添加扩展项目依赖库

    11e648e0ce5d0755dff35c3d9208a24c.JPG

    11e648e0ce5d0755dff35c3d9208a24c.JPG

    UI实现

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

    ce274c9739c7e000e4abc3a2b99225b2.JPG

    ce274c9739c7e000e4abc3a2b99225b2.JPG

    296f9712c9ed9fc8b4d34f61a288db27.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:token completion:^(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 in return act.activityState == .active } guard activities.count > 0 else { return } for item in activities { Task { // print("end activity (item.id)") await item.end(dismissalPolicy:.immediate) } } } 去年今日运营文章

    2021:  最好的商业模式是怎样的?(0)

    2021:  2021上半年抖音短视频及电商直播研究报告(0)

    2021:  提供企业微信第三方服务(0)

    2021:  宠物新浪潮下的入局态势及明星打法拆解(0)

    2021:  导致拼多多网店出现差评的三个因素?(1)

    提示:如果您觉得本文不错,请点击分享给您的好友!谢谢

    上一篇:如何设置windows便笺同步 win10便签同步设置方法 下一篇:秒验 REST API 手机号码置换接口

    郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。