自定义推送通知屏幕

Posted

技术标签:

【中文标题】自定义推送通知屏幕【英文标题】:Custom push notification screen 【发布时间】:2015-03-11 18:41:07 【问题描述】:

我正在开发一个 ios 视频聊天应用程序。当有人打电话给我时,我想像 FaceTime 应用程序一样显示通知。

目前我使用显示横幅、消息和自定义声音的推送通知。

相反,我希望我的应用为传入事件(例如有人打电话给我)显示自定义屏幕。这可能使用苹果公共 API 吗?

请看下面的 FaceTime 通知屏幕。

Ps.:Skype 也使用不同的通知屏幕。

非常感谢, 丹尼尔

【问题讨论】:

您正在寻找“今日扩展”又名小部件。 developer.apple.com/library/ios/documentation/General/… 我不希望这个屏幕出现在“今天”屏幕中。我希望它在我的应用程序生成一些服务器端事件时出现。它应该代替传统的推送通知屏幕出现。 【参考方案1】:

我怀疑它与推送通知有什么关系,事实上你提到的 Skype 在推送通知可用之前就可以做到。

相反,如果您使用后台模式“voip”(IP 语音)创建应用程序,iOS 会为您提供一些额外的功能。一旦在网络套接字上检测到流量并调用applicationWillEnterForeground:,这将允许应用程序唤醒并进入前台。从那里你可以使用任何视图控制器。

如果您现在认为 «嗯,我的应用不提供 voip,但我会假装这样做以获得更好的通知» - 不要尝试,Apple 会拒绝任何声称是 voip 应用的应用,只是为了获得无限的后台时间。

【讨论】:

有没有例子说明这一点?任何传入流量都会调用“applicationWillEnterForeground”?【参考方案2】:

不,推送通知对话框是无法自定义的系统对话框。不过 FaceTime 是 Apple 的应用程序,他们可以按照自己的方式对其进行自定义,而不是向第三方开发者开放。

但是,您可以利用 iOS 8.0 添加的“UIMutableUserNotificationCategory”来自定义通知中的操作:

https://developer.apple.com/library/prerelease/ios/documentation/UIKit/Reference/UIMutableUserNotificationCategory_class/index.html

示例教程: http://www.thinkandbuild.it/interactive-notifications-with-notification-actions/

【讨论】:

Skype 还使用自定义通知屏幕。所以我认为这是可能的。【参考方案3】:

我不确定他们是如何做到的,但是当用户在设备锁定和使用期间接到电话时,Skype 设法获得了自定义通知。

http://blogs.skype.com/2014/09/22/skype-5-5-for-iphone-answer-skype-calls-in-an-instant/

编辑:看起来 IOS8 添加了交互式通知 API。这可能是您的下一个问题:How do I make interactive notifications in iOS 8 app?

【讨论】:

是的。所以必须有一些方法来定制这个屏幕。但我在苹果官方文档中找不到任何参考资料。 您可以使用 iOS 8.0 支持的有限功能对其进行自定义。但不像 FaceTime 应用程序。 Skype 使用:thinkandbuild.it/…

以上是关于自定义推送通知屏幕的主要内容,如果未能解决你的问题,请参考以下文章

在推送/本地通知右侧显示自定义图像?

Angular 8,Firebase 推送通知:无法在推送通知上获取调试器或自定义逻辑

如何在锁定屏幕上显示 gcm 推送通知?

在 Android 8.0 中未显示使用 parse sdk 的推送通知

推送通知未在Android 8.0中使用解析sdk显示

屏幕锁定时如何通知推送通知?