iOS 14 小部件:单击项目以在 Cordova 上打开应用程序页面

iOS 14 Widget: Click item to open app page on Cordova

我有一个基于 Cordova 的项目,最近我为 ios 14 开发了小部件。 目标:当用户单击小部件文章项目时,我想要 console.log() 或在 Cordova 项目上捕获 URL,以便我可以将用户重定向到文章页面。

在项目中已经存在处理深度的代码link。但是无论何时,我都单击我的应用程序启动的小部件项目。 例如:如果单击 Slack 应用程序中的文章 link。用户将登陆相应的文章。

我正在使用这个插件 cordova-universal-links-plugin, cordova-plugin-customurlscheme

关于 Widget Native 代码,我遵循了文档 Creating widget 对于我正在使用的其他小部件,我正在使用 Link 方法 WidgetFamily.systemMedium 或 WidgetFamily.systemLarge widgetURL(_:)

Link(destination: URL(string: urlString)!,label: {
                   Text(article.Title != nil ? article.Title! : "test")
                       .lineLimit(3)
                       .font(.system(size: 14, weight: .semibold, design: .default))
                       .padding()
               })

.widgetURL(URL(string: article.URL != nil ? article.URL! : ""))

我在 cordova APP 上有

// Custom url scheme : cordova-plugin-customurlscheme
    window.handleOpenURL = url => {
      setTimeout(() => {
        main.onOpenApplicationLinks(url)
      }, 0)
    }
 // Universal Link Cordova Plugin
    universalLinks.subscribe('openPath', (eventData)=> console.log(eventData))

如何在 cordova App 上捕获 URL 或记录 URL 提前致谢

经过几天的研究。我终于对 cordova-universalLink-Plugin 进行了更改。 在插件 Appdelegate+CULPlugin.m 添加

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey,id> *)options {
    if ([url.scheme isEqualToString:@"http"] || [url.scheme isEqualToString:@"https"]) {
        NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:NSUserActivityTypeBrowsingWeb];
        [activity setWebpageURL:url];
        
        CULPlugin *plugin = [self.viewController getCommandInstance:PLUGIN_NAME];
        return [plugin handleUserActivity:activity];
    }else{
        return NO;
    }
    
}

瞧...,现在可以使用了