我可以通过应用扩展在主 iOS 应用中执行任务吗?

Posted

技术标签:

【中文标题】我可以通过应用扩展在主 iOS 应用中执行任务吗?【英文标题】:Can I perform a task in Main iOS app from the app Extension? 【发布时间】:2021-11-19 22:10:35 【问题描述】:

我有一个用于共享的应用扩展(共享扩展),当用户选择我的应用来共享图像时,我的应用会将该图像发送到服务器。

问题在于服务器需要经过身份验证的身份 (AWS Cognito) 才能将对象发送到服务器。由于我无法将身份验证从我的主应用程序共享到我的扩展程序,并且我不想让用户每次想要共享时都登录,所以我被卡住了。

我可以看到这是通过消息传递应用程序完成的,其中用户从共享扩展程序发送消息。我不确定他们是如何做到这一点的。由于不会要求用户在扩展程序中再次登录,因此凭据以某种方式与扩展程序共享,或者应用程序暂时启动以执行上传,同时保持在后台(不确定这是否可能)。

所以我的问题是我应该使用什么方法。扩展程序是否应该以某种方式指示主应用程序上传图像,还是我应该想办法以安全的方式与扩展程序共享访问令牌并在没有任何用户操作的情况下访问它们?

【问题讨论】:

假设您的身份验证生成会话令牌,您可以将其保存在共享钥匙串项目中,您的共享扩展程序可以访问它。 【参考方案1】:

解决方案是为应用和扩展设置一个共享容器,请参阅本文中的“与包含的应用共享数据”部分:https://developer.apple.com/library/archive/documentation/General/Conceptual/ExtensibilityPG/ExtensionScenarios.html#:~:text=To%20enable%20data%20sharing%2C%20use,App%20to%20an%20App%20Group。

【讨论】:

以上是关于我可以通过应用扩展在主 iOS 应用中执行任务吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在主 iOS 应用程序及其共享扩展程序之间使用相同的经过身份验证的用户令牌

如何在此扩展程序中创建一个按钮,在不使用操作按钮的情况下在主应用程序中打开特定视图?

iOS ---Extension编程指南

可以在首次打开更新的应用程序之前打开应用程序扩展程序吗?

我可以在 ios 应用程序图标上显示星号或圆点而不是徽章计数吗? [关闭]

iOS:在应用程序处于后台时执行上传任务