应用在 iOS 中启动时是不是存在应用间通信?

Posted

技术标签:

【中文标题】应用在 iOS 中启动时是不是存在应用间通信?【英文标题】:Is there inter-app communication when apps start in iOS?应用在 iOS 中启动时是否存在应用间通信? 【发布时间】:2014-10-18 04:37:07 【问题描述】:

我对 ios 应用程序开发比较陌生,我只是想弄清楚一些对我来说更抽象的东西。应用程序如何知道其他应用程序何时启动?我能想到的最接近的例子是当音乐在后台播放并且您打开另一个有声音的应用程序并且音乐停止时。那是新的应用程序获得授权还是存在应用程序间通信?如果有交流,这种交流是如何工作的?就像它是可以访问的消息还是什么?

抱歉,如果这没有多大意义,我会尽力详细说明。我在苹果的开发者网站上找不到任何东西。提前致谢!

【问题讨论】:

从这里开始:developer.apple.com/library/ios/documentation/Audio/Conceptual/… 然后,谷歌搜索相关类和术语的名称,例如 AVAudioSession,您会看到更多讨论。 【参考方案1】:

没有应用程序间通信。每个应用程序都生活在自己的世界中,就您的应用程序而言,它是手机上唯一的应用程序。通信发生的方式是应用程序与系统对话,系统与您的应用程序对话。系统向您的应用程序发送消息的方式通常在您正在使用的框架的委托中。在您的示例中,打开您的应用程序播放音频将向系统发送一条消息,系统将告诉其他应用程序停止音频播放。另一个应用程序不知道是您的应用程序启动了停止。另一个例子是AppDelegate。应用程序委托将发送您的应用程序消息,例如application:didFinishLaunchingWithOptions:,在此方法中您可以自定义应用程序初始化或applicationWillResignActive:,通常在用户按下主页按钮或接听电话时发送,所以在这里你可能想保存你的游戏等。

其实iOS系统是相当复杂的,复杂到这里再详细解释,所以我强烈建议阅读Apple Developer Documentation,有些内容可能有点枯燥,但他们尽量连贯,甚至绝对的初学者。

【讨论】:

以上是关于应用在 iOS 中启动时是不是存在应用间通信?的主要内容,如果未能解决你的问题,请参考以下文章

Linux进程间通信总结

进程间通信时是不是可以获取活动调用者应用程序的包名?

使用 URL 方案的 iOS 应用间通信

确定应用程序是不是存在并在 iOS 上启动该应用程序

进程间通信方式

重启ios应用后检查照片是不是仍然存在于相机胶卷中