You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

已创建Live Activities但通知中心无法显示问题求助

Live Activities创建成功但通知中心不显示

我已实现Live Activities功能,调用创建接口无报错且能正常生成Activity,但在通知中心无法看到它。开发环境为XCode 15.0 beta 8,测试设备是搭载iOS 17.0的真机。

以下是相关代码及日志信息:

NotificationLiveActivity.swift 完整代码

import ActivityKit
import WidgetKit
import SwiftUI

struct NotificationAttributes: ActivityAttributes {
    public struct ContentState: Codable, Hashable {
        var title: String
        var label: String
    }
    
    var id: String
}

@available(iOS 16.2, *)
struct NotificationLiveActivity: Widget {
    var body: some WidgetConfiguration {
        ActivityConfiguration(for: NotificationAttributes.self) { context in
            Text(context.state.title)
        } dynamicIsland: { context in
            DynamicIsland {
                // Expanded UI goes here.  Compose the expanded UI through
                // various regions, like leading/trailing/center/bottom
                DynamicIslandExpandedRegion(.leading) {
                    Text(context.state.title)
                }
                DynamicIslandExpandedRegion(.trailing) {
                    Text(context.state.label)
                }
                DynamicIslandExpandedRegion(.bottom) {
                    Text(context.state.title)
                }
            } compactLeading: {
                Text(context.state.title)
            } compactTrailing: {
                Text(context.state.label)
            } minimal: {
                Text(context.state.title)
            }
            .widgetURL(URL(string: "http://www.apple.com"))
            .keylineTint(Color.red)
        }
    }
}

创建Activity的代码片段

func startLiveActivity(title: String, label: String) {
        let attributes = NotificationAttributes(id: "")
        let state = NotificationAttributes.ContentState(
            title: title, label: label
        )
        do {
            stopwatchActivity = try Activity<NotificationAttributes>.request(
                attributes: attributes, contentState: state, pushType: nil)
            NSLog("activity id: \(stopwatchActivity?.id ?? "")")
            
            NSLog("description: \(stopwatchActivity?.content.description ?? "")")
        } catch(let e) {
            NSLog("error: \(e)")
        }
    }

日志截图

日志截图

期望解决Live Activities在通知中心不显示的问题。


排查与解决建议

  1. 检查Widget Target配置
    • 确认Live Activity对应的Widget Target已正确添加到项目,且部署目标设置为iOS 16.2或更高版本。
    • 检查Widget Target的Info.plist,确保已添加NSWidgetExtensionPrincipalClass键,值为NotificationLiveActivity。
  2. 修正Activity属性的ID值
    • 当前代码中NotificationAttributes的id传入了空字符串,尝试替换为唯一非空值(如UUID().uuidString),空ID可能导致系统无法正确识别并展示Activity。
  3. 验证设备通知设置
    • 打开设备「设置→通知→你的App」,确认「实时活动」权限已开启。
    • 检查是否开启了专注模式,避免该模式屏蔽了App的实时活动通知。
  4. 优化Activity的UI展示
    • 主UI闭包中的Text可能因颜色与背景色一致导致不可见,尝试添加背景色和内边距:
      ActivityConfiguration(for: NotificationAttributes.self) { context in
          Text(context.state.title)
              .padding()
              .background(Color.systemBackground)
              .foregroundColor(Color.label)
      }
      
  5. 处理XCode Beta兼容性问题
    • 清理项目缓存(Command+Shift+K)后重新编译安装;若条件允许,切换到XCode 15正式版测试,Beta版本可能存在已知bug。

内容的提问来源于stack exchange,提问作者iamdipanshus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 14:36:03