【2】Swift Dynamic Island开辟

打印 上一主题 下一主题

主题 797|帖子 797|积分 2391

灵动岛(Dynamic Island)和实时活动(Live Activities)是 iPhone 为了便于用户在退出APP时,仍然能随时关注进行中的活动、高频操纵的组件。其中:


  • 灵动岛是,当用户退出当前App后,仍然在手机前置镜头附近展示的信息/状态,有小岛(minimal )大岛(compact )两种展示状态。
  • 实时活动是,在锁屏界面保持实时更新的信息卡片,其展示优先级高于通知。
先新建一个实时活动组件


  • 新建APP项目
    新建一个Swift APP项目,在 Info.plist 中加入一个新的条目 Supports Live Activities (或者使用原始Key: NSSupportsLiveActivities), 并且设置为 YES, 告诉体系你的 App 须要使用 Live Activity 的权限。 否则调用 API 的时间会直接报错(最新版本的 Xcode 才能找到这个选项)。
  • 创建实时活动组件项目。
    然后创建一个实时活动组件、按照 File -> New -> Target打开标签卡,搜索Widget Extension。


  • 创建后的目录结构如下

  • 将LiveActivityWidgetLiveActivit.swift文件的Target Membership 勾选上我们的 App 项目,如许做 App 代码中就可以引用到 Widget 中的内容 。

  • 如今就可以运行起来了。(但是此时大概你的灵动岛没任何反应,锁屏的实时界面没任何内容,这个是正常的,因为还没有增长启动灵动岛的代码呢,)
熟悉下实时活动的代码


  • 在LiveActivityWidgetLiveActivit.swift文件中,定义了两个结构体WidgetAttributes和WidgetLiveActivity。WidgetAttributes定义的是Dynamic IsIand的数据结构,WidgetLiveActivity定义了组件的View。
  1. struct LiveActivityWidgetAttributes: ActivityAttributes {
  2.     public struct ContentState: Codable, Hashable {
  3.         // Dynamic stateful properties about your activity go here!
  4.         var emoji: String
  5.     }
  6.     // Fixed non-changing properties about your activity go here!
  7.     var name: String
  8. }
  9. struct LiveActivityWidgetLiveActivity: Widget {
  10.                                                                                           
  11. }
复制代码

  • 启动Live Activity,
    我们须要一个位置,启动实时活动组件,在 App 主项目中,引入 ActivityKit,然后调用它的Activity.request方法:
[code]//
//  ViewController.swift
//  LiveActivity
//
//  Created by yu tian on 2024/7/31.
//

import UIKit
import ActivityKit

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        let state = LiveActivityWidgetAttributes.ContentState(emoji: "

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

莱莱

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表