Ai đó có thể đưa ra ví dụ về việc gửi thông báo thử nghiệm từ ứng dụng Cocoa đến Trung tâm thông báo không? ví dụ. khi tôi nhấp vào một số NSButton
Gửi thông báo tới trung tâm thông báo Mountain lion
Trả lời
Thông báo trong Mountain Lion được xử lý bởi hai lớp. NSUserNotification
và NSUserNotificationCenter
. NSUserNotification
là thông báo thực tế của bạn, nó có tiêu đề, tin nhắn, v.v. có thể được đặt thông qua các thuộc tính. Để gửi thông báo mà bạn đã tạo, bạn có thể sử dụng phương thức deliverNotification:
có sẵn trong NSUserNotificationCenter. Các tài liệu của Apple đã trình bày chi tiết thông tin về NSUserNotification & NSUserNotificationCenter nhưng mã cơ bản để gửi một thông báo như sau:
- (IBAction)showNotification:(id)sender{
NSUserNotification *notification = [[NSUserNotification alloc] init];
notification.title = @"Hello, World!";
notification.informativeText = @"A notification";
notification.soundName = NSUserNotificationDefaultSoundName;
[[NSUserNotificationCenter defaultUserNotificationCenter] deliverNotification:notification];
}
Điều đó sẽ tạo ra một thông báo với một tiêu đề, một thông báo và sẽ phát âm thanh mặc định khi nó được hiển thị. Có rất nhiều điều bạn có thể làm với thông báo hơn là chỉ thông báo này (chẳng hạn như thông báo lập lịch) và tất cả đều chi tiết trong tài liệu mà tôi đã liên kết đến.
Một điểm nhỏ, thông báo sẽ chỉ được hiển thị khi ứng dụng của bạn là ứng dụng chính. Nếu bạn muốn thông báo của mình hiển thị bất kể ứng dụng của bạn có khóa hay không, bạn cần phải chỉ định đại biểu cho NSUserNotificationCenter
và ghi đè phương thức ủy nhiệm userNotificationCenter:shouldPresentNotification:
để trả về CÓ. Bạn có thể tìm thấy tài liệu cho NSUserNotificationCenterDelegate
here
Dưới đây là ví dụ về việc cung cấp ủy quyền cho NSUserNotificationCenter và sau đó buộc thông báo được hiển thị bất kể ứng dụng của bạn có phải là khóa hay không. Trong tập tin AppDelegate.m ứng dụng của bạn, chỉnh sửa nó như thế này:
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
{
[[NSUserNotificationCenter defaultUserNotificationCenter] setDelegate:self];
}
- (BOOL)userNotificationCenter:(NSUserNotificationCenter *)center shouldPresentNotification:(NSUserNotification *)notification{
return YES;
}
Và trong AppDelegate.h, tuyên bố rằng các lớp phù hợp với các giao thức NSUserNotificationCenterDelegate:
@interface AppDelegate : NSObject <NSApplicationDelegate, NSUserNotificationCenterDelegate>
- 1. Tiện ích dòng lệnh để gửi thông báo đến Trung tâm thông báo trong Mountain Lion
- 2. Làm việc với Trung tâm thông báo của Mountain Lion bằng cách sử dụng PyObjC
- 3. NSUserNotificationTrung tâm thông báo bỏ qua
- 4. Xin chào mã thế giới cho Mountain Lion OSX 10.8 hiển thị thông báo như iChat
- 5. Trung tâm thông báo - thông báo không xuất hiện trong trung tâm thông báo khi họ nhận được trên ứng dụng đang hoạt động
- 6. Xóa thông báo khỏi trung tâm thông báo khi nhấp vào
- 7. phát hiện cài đặt trung tâm thông báo
- 8. Sử dụng Trung tâm thông báo Azure với Phonegap
- 9. Tôi có thể xóa các thông báo ứng dụng của mình khỏi Trung tâm thông báo của iOS 5 không?
- 10. Gửi thông báo với GObjects
- 11. Thông báo Android- Hiển thị toàn bộ thông báo
- 12. Gửi thông báo đẩy android thông qua node.js
- 13. Cách nhận thông báo khi thông báo được thông báo
- 14. Thông báo IAudioSessionManager2 không được gửi
- 15. Android gửi thông báo đẩy thông qua .net webservices
- 16. Gửi thông báo địa phương trong Android
- 17. cách xem trung tâm thông báo trên trình mô phỏng iOS?
- 18. Đặt mặc định ứng dụng cho Trung tâm thông báo iOS 5
- 19. Tắt Cử chỉ Trung tâm thông báo iOS 5 trong Ứng dụng
- 20. Làm cách nào để tắt hiển thị Trung tâm thông báo khi kéo xuống màn hình?
- 21. iOS5: cách xác định xem Trung tâm thông báo cho ứng dụng có được BẬT/TẮT
- 22. Hành vi lạ với nút gần trung tâm thông báo bị kéo xuống trên iPad
- 23. Tôi làm cách nào để nghe tất cả các thông báo được gửi tới Trung tâm mặc định của NSNotificationCenter của iOS?
- 24. Thông báo SQS Không xóa
- 25. Thông báo email TFS
- 26. Thông báo gửi bánh xe chuột đến điều khiển sai
- 27. Thông báo Growl trong python
- 28. - thay đổi thông báo
- 29. mã thông báo csrf sử dụng
- 30. Cách gửi Thông báo GATT Bluetooth Low Energy với Bluez?
bạn có thể xây dựng về cách ghi đè userNotificationCenter ? (xin lỗi im thực sự mới này :)) – haseo98
@ haseo98 Yup, tôi vừa thêm một ví dụ cho câu trả lời của tôi. – alexjohnj
Im nhận được lỗi bên cạnh phần applicationdidfinishlaunching của phương thức, Gửi 'AppDelegate * const __strong' đến tham số của loại không tương thích 'id'. Bất kỳ ý tưởng? –
haseo98