我有奇怪的经历。 当app是前景时,为什么会显示推送通知(在原生横幅中)? 它仅在iPhone 7(iOS10.1.1)上重现。
我测试了其他iPhone,如iPhone 5和iPhone 6s,具有相同的应用程序,相同的iOS版本。 当应用程序正常处于前台时,它不会显示。
推送横幅仅出现在iPhone 7上。
这是正常的吗?
我的应用是由Xamarin.forms创建的。 (目前,Xamarin将c#代码转换为目标C,因此它基本上是客观的c)
感谢。
答案 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 处理通知的框架。