2015-03-16 2 views
1

Так что мне удалось настроить локальное уведомление в моем приложении, сделав это.Местное уведомление iOS - действие по щелчку

NSDate *notifTime = [[NSDate date] dateByAddingTimeInterval:time]; 
UIApplication *app = [UIApplication sharedApplication]; 
UILocalNotification *notif = [[UILocalNotification alloc] init]; 

if (notif) { 
    notif.fireDate = notifTime; 
    notif.timeZone = [NSTimeZone defaultTimeZone]; 
    notif.repeatInterval = 0; 
    notif.alertTitle = title; 
    notif.alertBody = text; 

    if (sound == nil) { 

     NSLog(@"default sound"); 
    } 

    else { 

     NSLog(@"other sound"); 
     notif.soundName = sound; 
    }; 


    [app scheduleLocalNotification:notif]; 
} 

внутри метода, который называется

- (void)createDateNotification:(NSString*) title alertText: (NSString*)text timeToWait: (NSTimeInterval)time soundToPlay: (NSString*)sound; 

и когда я называю этот метод, Уведомление работает так же, как ожидалось. Моя проблема заключается в том, что в моей игре я хочу, чтобы это было, когда clickes пользователя на локальном уведомление, что он будет работать метод, который теперь просто делает так

-(void)rewardUser { 

NSLog(@"User rewarded") 

} 

но иногда она может работать другой метод, и я не» Не знаю, как это сделать. Будет оценено все, от стремительного к объективному. Большое спасибо!

ответ

0

Мне удалось решить это, выполнив это. При создании предупреждения я устанавливаю действие в общедоступную строку в моем классе, которая называется action, и как упоминалось в @songchenwen, я переопределил didReceiveLocalNotification, чтобы проверить, равен ли action числу переменных, и если так запустить метод для каждого один.

Я назвал Mothod как это настройка строки для действия

[self createReminderNotification:@"Give50Coins" messageTitle:@"t" messageBody:@"gfdhgsh" timeToWait:2 soundToPlay:@"audio.wav"]; 

И в методе я инициализирован уведомление установки всех деталей.

NSDate *notifTime = [[NSDate date] dateByAddingTimeInterval:time]; 
UIApplication *app = [UIApplication sharedApplication]; 
UILocalNotification *notif = [[UILocalNotification alloc] init]; 

action = actionAfterNotifiy; 

if (notif) { 

    notif.fireDate = notifTime; 
    notif.timeZone = [NSTimeZone defaultTimeZone]; 
    notif.repeatInterval = 0; 
    notif.alertTitle = title; 
    notif.alertBody = message; 

    if (sound == nil) { 

     NSLog(@"default sound"); 
    } 

    else { 

     NSLog(@"other sound"); 
    }; 

} 

[app scheduleLocalNotification: notif]; 

и в - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification

Я сделал это,

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

if ([action isEqualToString:@"Give50Coins"]) { 

    NSLog(@"wheyy"); 
} 
else { 
    //random stuff here 
} 
} 
1

Переопределите - (void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification*)notification в вашем AppDelegate и выполните свою задачу.

+0

Что делать, если есть несколько действий? Я попробую работать с ним спасибо! –

+0

Удалось заставить его работать, я отвечу тем, что я сделал –

+0

В вашем UILocalNotification задайте значения alertAction, а затем в методе получения вы можете получить значение alertAction в экземпляре UILocalNotification. –

Смежные вопросы