Khi nhận được một UILocalNotification
Xác định nếu UILocalNotification bắn với ứng dụng trong foreground hoặc background
- Phương pháp
application:DidReceiveLocalNotification
được gọi khi ứng dụng trong Foreground. - Khi ứng dụng ở dưới nền, ứng dụng sẽ mở ứng dụng và sau đó gọi
application:DidReceiveLocalNotification
.
Làm cách nào để xác định một trong những trường hợp này đang diễn ra? Tôi muốn đối xử với họ một cách khác biệt.
Nếu ứng dụng ở dưới nền, sau đó người dùng cho biết họ muốn xem sự kiện. Vì vậy, trong application:DidReceiveLocalNotification
Tôi không muốn hỏi lại họ, tôi chỉ muốn đưa họ đến sự kiện.
Nhưng nếu ứng dụng nằm trong Foreground khi thông báo kích hoạt và gọi application:DidReceiveLocalNotification
, tôi muốn hỏi người dùng xem họ có muốn xem sự kiện hay không.
Về bản chất tôi sẽ có:
- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
if (appLauncedFromBackground)
// go to event
else
// ask if user wants to view event
}
Tôi đã nghĩ đến việc viết một giá trị bool cho một NSUserDefault bên applicationWillEnterForeground:application
và sau đó đọc và đặt nó bên application:DidReceiveLocalNotification
. Nhưng tôi nghĩ nếu có một cách để kiểm tra, đó sẽ là một con đường tốt hơn nhiều.
Cảm ơn, Mark
EDIT * ** * ** * ** * ** * ** * ** * ** * ** * ** * **
Cảm ơn xuzhe nhưng điều đó sẽ không hoạt động trong tình huống này. Dưới đây là chi tiết hơn một chút có thể giải thích tại sao nó không hoạt động và có thể giúp ai đó trả lời câu hỏi này cho tôi:
Tôi đang đặt ở đây là sự kiện như sự kiện lịch được lên kế hoạch kích hoạt tại người dùng được chọn vì vậy khi lên lịch thông báo, tôi sẽ không biết người dùng sẽ làm gì khi thông báo kích hoạt. Tôi đang sử dụng userInfo của thông báo để lưu trữ dữ liệu về sự kiện được lên lịch nhưng đặt giá trị như inBackground như được đề xuất sẽ không hoạt động.
Tôi biết đó sẽ là một trong hai tình huống nếu người dùng quyết định họ muốn "xem" sự kiện. (tất cả điều này sẽ cho rằng ứng dụng ở chế độ nền hoặc tiền cảnh và KHÔNG thoát).
1 - Nếu nó kích hoạt trong khi ứng dụng không được sử dụng & & ứng dụng ở chế độ nền và không thoát, iOS sẽ thông báo cho người dùng rằng sự kiện đã xảy ra và cung cấp tùy chọn để chuyển sang ứng dụng có trách nhiệm (là của tôi trong trường hợp này). Tại thời điểm đó giả sử người dùng nói "có đưa tôi đến ứng dụng tuyệt vời này" nó sẽ mở ứng dụng từ nền và gọi ứng dụng: DidReceiveLocalNotification nơi tôi có thể nhận được tất cả thông báo userInfo.
2 - Người dùng, tình cờ, xảy ra trong ứng dụng của tôi khi sự kiện được lên lịch diễn ra. Tại thời điểm đó, ứng dụng: Phương thức DidReceiveLocalNotification được gọi lại, nơi tôi có thể nhận được tất cả thông báo userInfo.
Nhưng đó là vào thời điểm này mà tôi muốn biết trong hai kịch bản chỉ diễn ra 1 hoặc 2.
Hope chi tiết bổ sung này về việc sử dụng của tôi về UILocalNotification
sẽ giúp trong việc trả lời câu hỏi này. Cảm ơn trước - dấu ấn
END EDIT * ** * ** * ** * ** * ** * ** * ** * ** * ***
Tôi đã chỉnh sửa câu hỏi để giúp giải thích rõ hơn. Và cảm ơn, @ xuzhe nhưng điều này sẽ không làm việc cho tôi. Tôi không thiết lập LocalNotification, nó là một UILocalNotification đã được lên kế hoạch để khởi động vào một số ngày. Do đó, tôi không thể xác định người dùng sẽ làm gì vào thời điểm đó. –
Đã chỉnh sửa lại câu trả lời. Bạn có thể dễ dàng kiểm tra trạng thái của ứng dụng bằng cách sử dụng thuộc tính UIApplicationState. – xuzhe
Rất đẹp. Đã khắc phục sự cố tôi đã có trong một thời gian. –