我想创建一个iMessage应用程序而不使用故事板,最好是使用SwiftUI来查看.我正在跟踪Apple forum中的答案,但在iMessage窗口中看不到.

我把Info.plist美元改成了:

<key>NSExtension</key>
    <dict>
        <key>NSExtensionPointIdentifier</key>
        <string>com.apple.message-payload-provider</string>
        <key>NSExtensionPrincipalClass</key>
        <string>MessagesViewController.swift</string>
    </dict>

一个简单的视图控制器:

import Messages
import SwiftUI

@objc (MessagesViewController)
class MessagesViewController: MSMessagesAppViewController {
    override func viewDidLoad() {
        super.viewDidLoad()

        let child = UIHostingController(rootView: SwiftUIView())
        child.view.translatesAutoresizingMaskIntoConstraints = false
        self.view.addSubview(child.view)
        
        NSLayoutConstraint.activate([
            child.view.topAnchor.constraint(equalTo: view.topAnchor, constant: 0.0),
            child.view.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 0.0),
            child.view.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: 0.0),
            child.view.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: 0.0)
            ])
    }

最后是一个简单的SwiftUI视图:

struct SwiftUIView: View {
    var body: some View {
        Text("Hello, Earth!")
    }
}

到目前为止,没有任何运气.有谁知道我哪里出错了吗?

推荐答案

您的问题出在Info.plist文件中.您已将MessagesViewController.swift指定为NSExtensionPrincipalClass

这是源文件名,而不是类名.您需要指定以模块名称为前缀的类名(MessagesViewController).

将您的Info.plist更改为

<key>NSExtension</key>
    <dict>
        <key>NSExtensionPointIdentifier</key>
        <string>com.apple.message-payload-provider</string>
        <key>NSExtensionPrincipalClass</key>
        <string>$(PRODUCT_MODULE_NAME).MessagesViewController</string>
    </dict>

Ios相关问答推荐

iOS中的分段拾取器—手柄点击已 Select 的项目

在SwiftUI中为圆角矩形创建均匀分布的点轮廓

如何在本地iOS没有插件的情况下处理平台线程?

如何使用Xcode15.1在iMessage扩展模块中显示贴纸

在嵌套的DISPATCH_AFTER块中正确使用strong自/弱自

withTaskGroup不适用于CLGeocoder

当任何 TextEditor 有多于一行时,所有 TextEditor 都会调整大小

应用程序被杀死时如何在 flutter ios 应用程序中播放音频?

更改图标会导致 SwiftUI 动画出现故障?

FileHandle 不会在 iOS 中释放内存

在视图控制器中实例化视图控制器是否可能/智能?

`Task` 在内部调用异步函数时阻塞主线程

SignalR 永远不会在 iOS 上使用 Xamarin Forms 启动

Flutter 错误:CocoaPods not installed or not in valid state.

从 NSData 或 UIImage 中查找图像类型

核心数据 - 无法在路径加载优化模型

自动布局:是什么创建了名为 UIView-Encapsulated-Layout-Width & Height 的约束?

iOS SDK - 以编程方式生成 PDF 文件

将视图控制器从一个情节提要移动或复制到另一个情节提要

/usr/bin/codedesign 失败,退出代码为 1