2011-11-04 19 views
9
UILocalNotification *notif = [[cls alloc] init]; 
notif.fireDate = [self.datePicker date]; 
notif.timeZone = [NSTimeZone defaultTimeZone]; 

notif.alertBody = @"Did you forget something?"; 
notif.alertAction = @"Show me"; 

nếu người dùng nhấp vào "showme", ứng dụng sẽ mở và anh ta sẽ nhận được cảnh báo. Tôi nên viết mã này ở đâu và nếu có thể, vui lòng cung cấp cho tôi một chút mã sốMã cho hành động cảnh báo của UILocalNotification

Trả lời

24

Bạn sẽ nhận được thông báo về số UILocalNotification ở hai vị trí tùy thuộc vào trạng thái của ứng dụng tại thời điểm thông báo được kích hoạt.

1.In ứng dụng: didFinishLaunchingWithOptions: phương pháp, nếu ứng dụng không chạy cũng không ở chế độ nền.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { 

    ... 
    UILocalNotification *localNotif = [launchOptions objectForKey:UIApplicationLaunchOptionsLocalNotificationKey]; 
    if (localNotif) {  
     // Show Alert Here 
    } 
    ... 
} 

2.In ứng dụng: didReceiveLocalNotification: phương pháp nếu ứng dụng là một trong hai chạy hoặc ở chế độ nền. Nó gần như vô dụng để hiển thị cảnh báo khi ứng dụng đang chạy. Vì vậy, bạn phải hiển thị cảnh báo chỉ khi ứng dụng ở chế độ nền tại thời điểm thông báo được kích hoạt. Để biết liệu ứng dụng có đang tiếp tục từ nền sử dụng phương thức applicationWillEnterForeground: hay không.

- (void)applicationWillEnterForeground:(UIApplication *)application { 

    isAppResumingFromBackground = YES; 
} 

Sử dụng này, bạn có thể hiển thị các cảnh báo trong didReceiveLocalNotification: phương pháp duy nhất khi ứng dụng được nối lại từ nền.

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { 

    if (isAppResumingFromBackground) { 

     // Show Alert Here 
    } 
} 

Bạn chỉ đơn giản là có thể bỏ qua nếu điều kiện nếu bạn muốn hiển thị xem cảnh báo tất cả các thời gian thông báo bị sa thải bất kể trạng thái của ứng dụng.

+0

cảm ơn cảnh báo đang hoạt động tốt ..... Nhưng văn bản được hiển thị trong cảnh báo đó là từ trình điều khiển chế độ xem khác và tại sao nó không hoạt động ??. 'application.applicationIconBadgeNumber = 0; \t NSString * remindTextText = [notification.userInfo objectForKey: kRemindMeNotificationDataKey]; \t [viewController showReminder: reminderText]; – Chandu

+0

hiển thị lời nhắc là phương pháp tôi đã viết trong bộ điều khiển xem khác nhưng tôi không biết tại sao nó không nhận được gọi là – Chandu

+0

cách tốt đẹp để đối phó với notif địa phương. Bạn có đề xuất bất kỳ địa điểm nào để đặt 'isAppResumingFromBackground' thành' YES' không? Một số nơi nó sẽ được gọi sau khi 'application: didReceiveLocalNotification:' nhưng sẽ được gọi trong bất kỳ trường hợp nào ứng dụng tiếp tục. – dvkch

0

có phương thức đại biểu được gọi là didreceivelocalnotification.Bạn phải viết điều này trong ủy nhiệm ứng dụng. Khi người dùng nhấp vào đại biểu này phương thức sẽ gọi. Soạn mã bất kỳ trong phương thức didreceivelocalnotifaction.

- (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification { 
} 
+0

- (void) ứng dụng: (UIApplication *) ứng dụng didReceiveLocalNotification: (UILocalNotification *) thông báo { \t \t application.applicationIconBadgeNumber = 0; \t NSString * reminderText = [notification.userInfo \t \t \t \t \t \t \t objectForKey: kRemindMeNotificationDataKey]; \t [viewController showReminder: reminderText]; } – Chandu

+0

Tôi đã viết điều này nhưng tôi không biết tại sao phương thức showReminder này không được gọi là – Chandu

+0

kiểm tra xem phương thức đó có đang gọi hay không? – Tendulkar

4

Thêm một chức năng mà chúng tôi sẽ kêu gọi các liên lạc của các nút bên trong tập tin YourViewController.h và sau đó cung cấp cho cơ thể mà chức năng trong YourViewController.m nộp

-(void)Trigger_LocalNotification 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 

    UILocalNotification *_localNotification = [[UILocalNotification alloc]init]; 

     //setting the fire dat of the local notification 
    _localNotification.fireDate = [NSDate dateWithTimeIntervalSinceNow:5]; 


    //setting the time zone 
    _localNotification.timeZone = [NSTimeZone defaultTimeZone]; 

    //setting the message to display 
    _localNotification.alertBody = @"Did you forget something?"; 

    //default notification sound 
    _localNotification.soundName = UILocalNotificationDefaultSoundName; 

    //displaying the badge number 
    _localNotification.applicationIconBadgeNumber = [[UIApplication sharedApplication]applicationIconBadgeNumber]+1; 

    //schedule a notification at its specified time with the help of the app delegate 
    [[UIApplication sharedApplication]scheduleLocalNotification:_localNotification]; 

} 

Dòng đầu tiên của mã loại bỏ tất cả các thông báo địa phương từ hệ thống nếu chúng được khai báo. Trong dòng thứ hai tôi đang khởi tạo biến UILocalNotification và trong dòng thứ ba tôi đang sử dụng thuộc tính fireDate để đặt thời gian khi thông báo cục bộ này kích hoạt và bạn có thể thấy thông báo sẽ được kích hoạt sau 5 giây.

SoundName là thuộc tính của lớp UILocalNotification được sử dụng để phát âm thanh khi thông báo được kích hoạt và khi ứng dụng kích hoạt thông báo cục bộ này không hoạt động thì trong trường hợp đó, hộp thông báo sẽ bật lên với thông báo mặc định âm thanh và thông điệp cảnh báo được viết bằng cách sử dụng cảnh báo thuộc tínhBody. Dòng cuối cùng của mã sẽ đính kèm thông báo này với hệ thống.

hãy chắc chắn để đính kèm chức năng này với nút chạm lên bên kiện

[btn addTarget:self action:@selector(Trigger_LocalNotification) forControlEvents:UIControlEventTouchUpInside]; 

Bây giờ chọn file App Delegate.m của dự án của bạn và tạo ra các đối tượng của lớp này (YourViewController)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    // Override point for customization after application launch. 
    YourViewController *obj = [[YourViewController alloc]init]; 
    [self.window addSubview:obj.view]; 
    [self.window makeKeyAndVisible]; 
    return YES; 
} 

Chạy ứng dụng và khi ứng dụng được khởi chạy trong trình mô phỏng thì nhanh chóng nhấn nút trang chủ để xem hộp cảnh báo của thông báo địa phương sau 5 giây.

Tôi hy vọng câu trả lời này đã giúp bạn tìm hiểu cách triển khai UILocalNotification.

+0

Còn hành động cảnh báo thì sao ??? trong trường hợp của tôi nếu người dùng nhấp vào nút hành động đó, ứng dụng sẽ đến tiền cảnh và người dùng sẽ thấy cảnh báo (không phải cảnh báo và cảnh báo) – Chandu

Các vấn đề liên quan