轻按即可从 SwiftUI 小部件执行深层链接

Perform a deeplink from SwiftUI widget on tap(轻按即可从 SwiftUI 小部件执行深层链接)
本文介绍了轻按即可从 SwiftUI 小部件执行深层链接的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个带有两个文本的简单小部件(中等大小),我想要的是能够执行深层链接以将用户引导到我的应用程序的特定部分,但我似乎找不到一种方法.

I have a simple widget (medium-sized) with two texts, and what I want is to be able to perform a deep link to lead the user to a specific section of my app, but I can't seem to find a way to do so.

我写的视图(很简单):

The view I have written (which is very simple):

HStack {
    Text("FIRST ITEM")    
    Spacer()
    Text("SECOND ITEM")
}

我已经尝试替换

Text("SECOND ITEM")

Link("SECOND ITEM destination: URL(string: myDeeplinkUrl)!)

但它也不起作用.

推荐答案

  1. Widget视图中你需要创建一个Link并设置它的destination url:
  1. In the Widget view you need to create a Link and set its destination url:

struct SimpleWidgetEntryView: View {
    var entry: SimpleProvider.Entry

    var body: some View {
        Link(destination: URL(string: "widget://link1")!) {
            Text("Link 1")
        }
    }
}

请注意,Link 仅适用于 mediumlarge 小部件.如果你使用 small Widget,你需要使用:

Note that Link works in medium and large Widgets only. If you use a small Widget you need to use:

.widgetURL(URL(string: "widget://link0")!)

  1. 在您的 App 视图中使用 onOpenURL 接收网址:
  1. In your App view receive the url using onOpenURL:

@main
struct WidgetTestApp: App {
    var body: some Scene {
        WindowGroup {
            Text("Test")
                .onOpenURL { url in
                    print("Received deep link: (url)")
                }
        }
    }
}

也可以通过覆盖在 SceneDelegate 中接收深层链接:

It is also possible to receive deep links in the SceneDelegate by overriding:

func scene(_ scene: UIScene, openURLContexts URLContexts: Set<UIOpenURLContext>)

您可以在此线程中找到有关如何使用此功能的更多说明:

You can find more explanation on how to use this function in this thread:

  • 检测来自 WidgetKit 小部件扩展的应用启动

这是一个 GitHub 存储库,其中包含不同的 Widget 示例,包括 DeepLink Widget.

Here is a GitHub repository with different Widget examples including the DeepLink Widget.

这篇关于轻按即可从 SwiftUI 小部件执行深层链接的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Why local notification is not firing for UNCalendarNotificationTrigger(为什么没有为UNCalendarNotificationTrigger触发本地通知)
iOS VoiceOver functionality changes with Bundle Identifier(IOS画外音功能随捆绑包标识符而变化)
tabbar middle tab out of tabbar corner(选项卡栏中间的选项卡角外)
Pushing UIViewController above UITabBar(将UIView控制器推送到UITabBar上方)
Dropbox Files.download does not start when number of files in folder is gt; 1000(当文件夹中的文件数为1000时,Dropbox Files.Download不会启动)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)