2013-06-27 29 views
14

Hey,iOS "địa phương" Push Notification

Tôi đang tìm một cách để làm "địa phương" thông báo đẩy. Tôi không thể hiểu làm thế nào tôi nên làm điều này, vì vậy tôi đang tìm kiếm một số trợ giúp. Những gì tôi cần là:

  • cách gửi thông báo cho người dùng chưa mở ứng dụng trong vòng 24 giờ. (Hoặc một số int thay đổi không thích hợp)

Tôi thực sự hy vọng rằng một trong các bạn có thời gian để giúp tôi, cảm ơn!

+6

Tôi đã nhận thấy * khi nhập thẻ cho bạn * rằng ui-local-not ification là một thẻ được liệt kê. Điều này làm cho tôi nghi ngờ bạn đã cố gắng để tìm một giải pháp cho vấn đề trước khi đến đây. – borrrden

Trả lời

44

này là khá thẳng về phía trước:

1) Khi ứng dụng được đóng lại, sắp xếp một thông báo địa phương rằng sẽ cháy trong 24 giờ

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    UILocalNotification *notification = [[UILocalNotification alloc] init]; 
    notification.fireDate = [[NSDate date] dateByAddingTimeInterval:60*60*24]; 
    notification.alertBody = @"24 hours passed since last visit :("; 
    [[UIApplication sharedApplication] scheduleLocalNotification:notification]; 
} 

2) nếu ứng dụng được mở ra (trước khi thông báo cục bộ kích hoạt), hãy hủy thông báo địa phương

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 
} 
+0

Cảm ơn, điều này đã giúp ích rất nhiều! –

+0

Tôi có câu hỏi nhanh: - Nếu bây giờ tôi muốn kiểm tra xem nó có hoạt động hay không, làm cách nào để tạo phiên bản gửi thông báo này trong vòng 30 hoặc 10 giây? –

+0

Chỉ cần thay đổi '60 * 60 * 24' thành' 30' (đây là số giây từ 'now') – tilo

1

UILocalNotification sẽ phù hợp với bạn yêu cầu Apple doc

+4

Xin vui lòng bình luận xuống? có lẽ tôi có thể cải thiện câu trả lời – Andrea

2

Bạn có thể sử dụng UILocalNotification cho mục đích này.

Và thực hiện UIApplicationapplicationWillTerminateapplicationDidEnterBackground bạn đại biểu như:

- (void)applicationWillTerminate:(UIApplication *)application 
{ 
    [self scheduleNotification]; 
} 

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    [self scheduleNotification]; 
} 

- (void)scheduleNotification 
{ 
    UILocalNotification *locNot = [[UILocalNotification alloc] init]; 
    locNot.fireDate    = [NSDate dateWithTimeIntervalSinceNow:60 * 60 * 24]; 
    [[UIApplication sharedApplication] scheduleLocalNotification: locNot]; 
} 

Khi bạn nhập vào để ứng dụng của bạn, bạn cần phải hủy bỏ thông báo này. Vì vậy, thực hiện applicationDidBecomeActive như;

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    [[UIApplication sharedApplication] cancelAllLocalNotifications]; 
} 
Các vấn đề liên quan