2016-12-01 16 views
0

我有奇怪的經歷。 爲什麼當應用程序處於前景時,會顯示推送通知(在本機橫幅中)? 它僅在iPhone 7(iOS10.1.1)上覆制。爲什麼推送通知顯示應用程序是前景? (iOS10/iPhone 7)

我使用相同的應用程序,相同的iOS版本在iPhone 5和iPhone 6s等其他iPhone上測試過。 正常情況下應用程序處於前景時未顯示。

推送橫幅只出現在iPhone 7上。

這是正常的嗎?

我的應用程序由Xamarin.forms創建。 (現在,Xamarin將C#代碼轉換爲目標C,因此它基本上是客觀的c)

謝謝。

+0

你能更詳細說明您的這條線**我在其他的iPhone進行測試 - 但相同的應用程序,同樣的iOS版本,但僅適用於iPhone 7 **發生 – Wolverine

+1

@BrightLee如果你使用'斯威夫特我也建議添加。 '','Objective-c'或者其他一些你的應用的框架。以及如果您使用Apple的API或SDK創建您的通知。 – jkasten

回答

4

如果一個應用程序升級到iOS10,和他們的應用程序開發者已經使用的UserNotifications framework.Then存在由其中當應用程序處於前臺通知可被顯示爲天然橫幅功能。

UNNotificationPresentationOptions標誌允許您指定UNNotificationPresentationOptionAlert顯示使用通知中的文本警報。

如果你使用的是iOS10,它的效果會一樣,而且應用程序與UserNotifications框架兼容。

正如您所提到的,您已經使用其他設備使用相同版本測試了應用程序,然後可能是其應用程序的最新版本未安裝在這些設備上。

它不僅基於iPhone7。當iOS10在你的設備上安裝了 並且應用程序使用UserNotifications 框架來處理通知時,這將起作用。

+0

謝謝金剛狼。是的,我忘了我已經設置了這些代表。 –

6

從iOS 10開始,開發人員可以控制應用程序的焦點時顯示通知的方式。這是通過設置UNUserNotificationCenterDelegate完成的。

userNotificationCenter:willPresentNotification:withCompletionHandler:將在此代表上被觸發,其中UNNotificationPresentationOptions可傳遞給completionHandler以確定通知是否應隨其聲音和徽章值更新一起顯示。

根據你的問題,這聽起來像你使用SDK或框架來添加通知。您仍然可以使用UNUserNotificationCenterDelegate以及大多數通知SDK。

請注意,在iOS 9和更早版本的設備上,此代理不可用,並且通知中將顯示而不是,當您的應用程序處於焦點時收到通知時將會收到通知。相反,您必須仍舊使用舊版iOS的UIApplicationDelegate,併爲其顯示應用內消息。

+0

謝謝jkasten。是的,我忘了我已經設置了這些代表。對不起,我只能將「答案」標記設置爲一個。 –

+0

如何在用戶點擊前臺通知時捕捉事件? – huync

+0

當您分配'UNUserNotificationCenterDelegate'時,AppDelegate上的通知事件將不再觸發,因此您需要將此新方法添加到此代理['userNotificationCenter:didReceiveNotificationResponse:withCompletionHandler:'](https://developer.apple.com /文檔/ usernotifications/unusernotificationcenterdelegate/1649501-usernotificationcenter?語言= objc)。 – jkasten