首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >macOS:在macOS Ventura的Notes中实现类似于App的东西

macOS:在macOS Ventura的Notes中实现类似于App的东西
EN

Stack Overflow用户
提问于 2022-09-19 16:51:19
回答 1查看 66关注 0票数 4

从macOS 13 Ventura开始,苹果在Notes工具栏上添加了一个按钮,允许您快速将链接和通用链接插入到其他应用程序(如Safari或Message)中的便笺中。

我想知道它背后是否有一个公共API。一开始我以为它是由SharedWithYou框架支持的,但这似乎只适用于通过通用链接与应用程序相关联的链接。我特别感兴趣的是从网站上获取链接,与用户共享消息或在Safari中打开。

EN

回答 1

Stack Overflow用户

发布于 2022-10-14 13:55:05

不幸的是,我并不完全确定如何实现您想要的相同特性,只提供一些细节。

你应该试着从苹果上读这份文件

他们推荐使用macos的以下内容在指定的应用程序中使用提供的选项异步打开一个或多个URL。

代码语言:javascript
复制
open(_:withApplicationAt:configuration:completionHandler:)

如声明是:

代码语言:javascript
复制
func open(
    _ urls: [URL],
    withApplicationAt applicationURL: URL,
    configuration: NSWorkspace.OpenConfiguration,
    completionHandler: ((NSRunningApplication?, Error?) -> Void)? = nil
)

您可以在第二个文档链接中找到要输入的内容,因为它们将代码标记为其中的链接。

现在的主要部分是你希望你的应用程序能够访问通用链接,这样你就可以跟随此文档支持应用程序中的通用链接。

要支持应用程序中的通用链接(来自文档):

  1. 在您的应用程序和您的网站之间创建一个双向关联,并指定您的应用程序处理的URL。见支持关联域
  2. 当应用程序委托接收到NSUserActivity对象并将activityType设置为NSUserActivityTypeBrowsingWeb时,更新其响应。

要更新应用程序委托以响应通用链接--示例代码演示如何在macOS中处理通用链接:

代码语言:javascript
复制
func application(_ application: NSApplication,
                     continue userActivity: NSUserActivity,
                     restorationHandler: @escaping ([NSUserActivityRestoring]) -> Void) -> Bool
{
    // Get URL components from the incoming user activity.
    guard userActivity.activityType == NSUserActivityTypeBrowsingWeb,
        let incomingURL = userActivity.webpageURL,
        let components = NSURLComponents(url: incomingURL, resolvingAgainstBaseURL: true) else {
        return false
    }

    // Check for specific URL components that you need.
    guard let path = components.path,
    let params = components.queryItems else {
        return false
    }    
    print("path = \(path)")

    if let albumName = params.first(where: { $0.name == "albumname" } )?.value,
        let photoIndex = params.first(where: { $0.name == "index" })?.value {            
        print("album = \(albumName)")
        print("photoIndex = \(photoIndex)")
        return true  

    } else {
        print("Either album name or photo index missing")
        return false
    }
}

苹果的另一篇文章,您可以跟随它来了解如何支持通用链接。

注意:

通用链接也可以用于消息!这是因为它使用apple-app-site-association文件来支持通用链接。通用链接也是用来访问应用程序之间的。

至于你想如何访问最近的链接,例如目前在应用程序中打开的链接,我目前还不太确定。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73776803

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档