我正在尝试将我的SwiftUI应用程序列在IOS照片库的共享表中,这样用户就可以直接用这张图片打开应用程序
示例:facebook, WhatsApp和Instagram等应用程序确实出现在共享列表中,我希望我的应用程序也出现在该列表中。
当从"文件"打开时,我成功地在图像的共享表上显示了我的应用程序。但不能在照片库上工作
我已经添加了这些行代码在我的应用程序的Info.plist
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>myapp image</string>
</array>
<key>CFBundleTypeName</key>
<string>imageData</string>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>LSHandlerRank</key>
<string>Alternate</string>
<key>LSItemContentTypes</key>
<array>
<string>public.png</string>
<string>public.jpeg</string>
<string>public.heic</string>
</array>
</dict>
</array>
<key>UTImportedTypeDeclarations</key>
<array>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.image</string>
</array>
<key>UTTypeDescription</key>
<string>PNG image</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>public.png</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>png</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.image</string>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>JPEG image</string>
<key>UTTypeIconFile</key>
<string>public.jpeg.icns</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>public.jpeg</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>jpeg</string>
<string>jpg</string>
</array>
</dict>
</dict>
<dict>
<key>UTTypeConformsTo</key>
<array>
<string>public.image</string>
<string>public.data</string>
</array>
<key>UTTypeDescription</key>
<string>HEIC image</string>
<key>UTTypeIconFiles</key>
<array/>
<key>UTTypeIdentifier</key>
<string>public.heif-standard</string>
<key>UTTypeTagSpecification</key>
<dict>
<key>public.filename-extension</key>
<array>
<string>heic</string>
</array>
</dict>
</dict>
</array>
概述
使用iOS共享表,用户在分享链接、图片、视频或文件等内容时,可以从建议列表中立即启动你的消息应用程序。分享表建议与用户经常互动的应用程序中的人进行对话,并根据用户最喜欢的应用程序和对话更新建议。当用户在iOS 16或更高版本中共享图像时,共享表将优先考虑与图像中识别的人的对话。
如何实现:
在应用程序的共享扩展中支持建议
祝你好运!
要让你的SwiftUI应用显示在iOS Photos共享表中,你需要做以下操作:
添加照片"授权到应用程序的授权文件。这将允许你的应用程序访问用户的照片库。
在你的应用程序中实现UIActivityViewController类。这个类提供了一个与其他应用程序共享内容的标准接口,包括照片应用程序。
在你的SwiftUI视图中,添加一个按钮或其他控件来触发共享表。当用户点击这个控件时,模态地呈现一个UIActivityViewController的实例。
在UIActivityViewController的初始化器中,将activityItems参数设置为你想要共享的项目的数组(例如UIImage或URL对象)。
在UIActivityViewController的初始化器中,设置applicationActivities参数为一个自定义UIActivity对象数组,如果你想在共享表单中包含自定义动作。
在用户点击分享按钮时模态地呈现UIActivityViewController。
struct ContentView: View {
var body: some View {
Button(action: {
// Load the image that the user wants to share
let image = UIImage(named: "example.jpg")!
// Create an instance of UIActivityViewController
let activityViewController = UIActivityViewController(activityItems: [image], applicationActivities: nil)
// Present the share sheet modally
UIApplication.shared.windows.first?.rootViewController?.present(activityViewController, animated: true, completion: nil)
}) {
Text("Share")
}
}
}