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: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)
            }
        }
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MobTech袤博科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值