使用随机字符串的UILocalNotification

时间:2014-09-04 12:34:23

标签: ios objective-c xcode uilocalnotification

我已经在我的项目上实现了UILocalNotification成功,我从NSDictionary随机化字符串失败了,我需要每隔5分钟发送一次全世界。在每5分钟,我需要在UILocalNotification中传递随机字符串。

这是我的示例代码:

    NSArray *word1Array= [_tmp objectForKey:@"word1"];

NSArray *word2Array = [_tmp objectForKey:@"word2"];

if([word1Array count] > 0)
{
    int minCount =  0;

    int totalcount = (int)[word1Array count];

    int randomIndex = (arc4random()%(totalcount-minCount))+minCount;

    NSString *word1 = [word1Array objectAtIndex:randomIndex];

    NSString *word2 = [word2Array objectAtIndex:randomIndex];

    NSString *wordbody = [NSString stringWithFormat:@"%@ - %@",word1,word2];

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

    reminderNote.repeatInterval = NSMinuteCalendarUnit;

    reminderNote.alertBody = wordbody;

    reminderNote.alertAction = @"Bak";

    reminderNote.soundName = @"sound.aif";

    reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 5];

    reminderNote.applicationIconBadgeNumber = 1;

    [[UIApplication sharedApplication] scheduleLocalNotification:reminderNote];


}

此代码开始发送带有随机字符串的通知,但每隔5分钟,它同时传递4-5个字,这真的很烦人。我如何修复它,每5分钟发送1个字符串?

1 个答案:

答案 0 :(得分:1)

如果我理解你的问题,你会在第5分钟获得N次相同的字符串。这是因为您同时安排本地通知。

您应该将上述代码放入以下内容: -

for(int i=1;i<=5 ;i++){
   //Your other code

   reminderNote.fireDate = [NSDate dateWithTimeIntervalSinceNow:60 * 5 * i];

   //Your other code
}

上述代码将安排本地通知5次,它将在当前时间的第5,10,15,20,25分钟通知用户。

更新答案: -

  

设备上的每个应用程序仅限于64个本地计划   通知。系统会丢弃超出预定的通知   此限制,仅保留将触发的64个通知   最快。重复通知被视为单个通知。

请参阅:https://developer.apple.com/Library/ios/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/Chapters/WhatAreRemoteNotif.html

安排新的本地通知:UILocalNotification with various alert body