当app是前景时,为什么会显示推送通知? (iOS10 / iPhone 7)

时间:2016-12-01 08:44:35

标签: ios ios10

我有奇怪的经历。 当app是前景时,为什么会显示推送通知(在原生横幅中)? 它仅在iPhone 7(iOS10.1.1)上重现。

我测试了其他iPhone,如iPhone 5和iPhone 6s,具有相同的应用程序,相同的iOS版本。 当应用程序正常处于前台时,它不会显示。

推送横幅仅出现在iPhone 7上。

这是正常的吗?

我的应用是由Xamarin.forms创建的。 (目前,Xamarin将c#代码转换为目标C,因此它基本上是客观的c)

感谢。

2 个答案:

答案 0 :(得分:6)

从iOS 10开始,开发人员可以控制应用关注焦点时通知的显示方式。这可以通过设置UNUserNotificationCenterDelegate

来完成

此代理会触发userNotificationCenter:willPresentNotification:withCompletionHandler:,其中UNNotificationPresentationOptions可以传递给completionHandler,以确定是否应显示通知及其声音和徽章值更新。

根据您的问题,听起来您正在使用SDK或框架来添加通知。您仍然可以使用UNUserNotificationCenterDelegate以及大多数通知SDK。

请注意,在iOS 9及更早版本的设备上,此代理无法使用,并且当您的应用处于焦点时收到通知时,会在通知中心显示通知。相反,您必须仍然对旧版iOS使用UIApplicationDelegate并为其显示应用内消息。

答案 1 :(得分:5)

如果某个应用程序已升级到iOS10,并且其应用程序的开发人员已使用 UserNotifications 框架。那么有一些功能可以在app应用时将通知显示为原生横幅在前景。

UNNotificationPresentationOptions 标志允许您指定UNNotificationPresentationOptionAlert以使用通知提供的文本显示提醒。

如果您使用iOS10,它的效果会相同,而且app与UserNotifications框架兼容。

正如您所提到的,您已使用相同版本的其他设备测试了该应用,然后可能是他们应用的最新版本未安装在这些设备上。

  

它不仅仅基于iPhone7。这将适用于iOS10   已安装在您的设备中,应用程序正在使用UserNotifications   处理通知的框架。