如何防止 iOS 14 Widget 打开应用程序并响应回调

Posted

技术标签:

【中文标题】如何防止 iOS 14 Widget 打开应用程序并响应回调【英文标题】:How to prevent iOS 14 Widget opening app and react to callback 【发布时间】:2021-03-14 20:59:45 【问题描述】:

所以,我已经阅读了几篇博客、帖子和 Apple 自己的人机界面指南,说明 ios 14 小部件不是交互式的,但是:按下目标时可以将短链接传递给应用程序。苹果自己说:“小部件有一个点击目标,中型和大型部件有多个点击目标”。好的!

现在,当您点击这些目标时,应用正在打开,并且小部件正在将该短链接传递给应用。

但是,现在我的问题是,谷歌在哪里说 Idk:

当点击我在小部件中创建的这些按钮之一时,我能否以编程方式说“阻止打开应用程序”?就像在 javascript 中一样简单:preventDefault() (https://developer.mozilla.org/en-US/docs/Web/API/Event/preventDefault)。

这可能吗?我只想阻止打开应用程序并访问触发的 Tap-Target 回调并在 SwiftUI 中处理我的东西。

非常感谢,伙计们:)

【问题讨论】:

不幸的是,Apple 的任何产品都不是一个好例子,因为它们可以做普通应用程序无法做到的事情。 是的,好点???? 【参考方案1】:

当点击我在小部件中创建的这些按钮之一时,我能否以编程方式说“阻止打开应用程序”?

不,这根本不可能(至少到目前为止,在 iOS 14 中)。

默认情况下,每当您点击小部件时,都会打开该应用程序。您只能指定深层链接等,但它们始终会打开应用程序。


我已经读到 [...] iOS 14 小部件不是交互式的

在这种情况下 interactive 意味着您不能像通常在主应用程序中使用视图那样触摸/拖动/交互 Widget view (见Why do some views appear as a red no entry sign in widgets?)。

此外,当您单击一个小部件时,您并没有真正与它的视图交互 - 您只是打开应用程序。从 iOS 14 开始,您无法更改它。

【讨论】:

感谢您提供信息,但在这种情况下,小部件只是虚拟的东西,我们无法对它们做太多事情,我对它们抱有很大希望,但它没有用,例如用户只想播放/暂停某些东西因此它必须通过Widget打开应用程序!我要给 Widget 和 Apple 一个美好的时光,让它们至少更有用 @swiftPunk 这就是 Apple 设计小部件的方式。它们不是迷你应用程序,而只是提供一目了然的信息。我建议你看看developer.apple.com/documentation/widgetkit @pawello2222 但这正是我们开发人员和用户体验设计师必须向他们提供反馈的地方,这是一个倒退!我们不能只是说:就是这样,我们不能因为它是“苹果”而做任何事情

以上是关于如何防止 iOS 14 Widget 打开应用程序并响应回调的主要内容,如果未能解决你的问题,请参考以下文章

SwiftUI iOS14 Widget - 使用相同的 WidgetFamily 创建多布局

如何在 iOS 14(SwiftUI) Widget Extension 中初始化 Facebook SDK?

iOS14.5 Widget 数据不是最新的

为啥 Today Widget 在 iOS 14 上显示“无法加载”且无法调试?

完全防止 iOS Web 应用在移动 Safari 中打开链接,即使链接包含参数

SwiftUI Widget iOS 14 渐变问题