HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了如何在iOS App App Extension和Extension(不是主机应用)之间进行通信大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
TLDR:是否可以在iOS应用程序和扩展程序之间发送实时消息或通知

我正在编写一个具有扩展名的iOS应用程序,它是同一个App Group的一部分,并且共享相同的CoreData(sqlite数据库).我可以使用COreData从应用程序和扩展名读写数据库,它们都共享相同的内容.

我的问题是:是否可以在应用程序和扩展名之间发送消息或通知,以通知对方如有必要更新?

我尝试通过NsnotificationCenter发送通知,但是如果我尝试写入共享NSUserDefaults的组,并且收听NSUserDefaultsDidChangeNotification,那么这个问题不会在App / Extension中出现.这在App内部工作,但扩展名没有收到任何东西(当我知道它被启动并且共享相同的NSUserDefaults)时.任何想法如何保持同步?

解决方法

TLDR:不,但是有一个黑客

iOS应用没有真正的进程间通信,有或没有扩展. NSDiStributedNotification仍然没有从OS X到iOS的旅程,可能不会.

使用某些扩展类型,您可以通过NSExtensionContext打开URL,并使用它们将数据传递到处理该URL的应用程序.这使应用程序到前台,这听起来不像你想要的.

一个黑客可能会让你得到你所需要的东西.

>而不是写入用户认值,写入您的应用程序组目录中的文件.
>不要直接写文件使用NSFileCoordinator对文件进行协调写入.
>在想知道文件更改的对象上实现NSFilePresenter,并确保调用[NSFileCoordinator addFilePresenter:someObject]
>在你的文件主持人上实现可选的itemsItemDidChange方法.

如果您执行所有这些权限,您可以从应用程序或扩展名写入此文件,然后在另一个自动调用presentItemDidChange.作为一个奖励,你当然可以读取该文件内容,所以你可以传递任意数据来回.

大佬总结

以上是大佬教程为你收集整理的如何在iOS App App Extension和Extension(不是主机应用)之间进行通信全部内容,希望文章能够帮你解决如何在iOS App App Extension和Extension(不是主机应用)之间进行通信所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。