2011-03-29 57 views
0

我尝试了一些博客,但是由于某种原因它不会启动!本地通知帮助!

难道是因为我没有要求许可吗?我想问问用户本地?我从苹果的文档中了解到我没有。

这是我singelton类(经过它被称为 - 具有断点)

// 
// «FILENAME» 
// «PROJECTNAME» 
// 
// Created by «FULLUSERNAME» on «DATE». 
// Copyright «YEAR» «ORGANIZATIONNAME». All rights reserved. 
// File created using Singleton XCode Template by Mugunth Kumar (http://mugunthkumar.com 
// Permission granted to do anything, commercial/non-commercial with this file apart from removing the line/URL above 

#import "NotifierSingelton.h" 

static NotifierSingelton* _instance; 

@implementation NotifierSingelton 

+ (NotifierSingelton*)sharedInstance 
{ 
    @synchronized(self) { 

     if (_instance == nil) { 

      // iOS 4 compatibility check 
      Class notificationClass = NSClassFromString(@"UILocalNotification"); 

      if(notificationClass == nil) 
      { 
       _instance = nil; 
      } 
      else 
      { 
       _instance = [[super allocWithZone:NULL] init]; 

      } 


      // Allocate/initialize any member variables of the singleton class her 
      // example 
      //_instance.member = @""; 
     } 
    } 
    return _instance; 
} 

- (void) scheduleNotificationOn:(NSDate*) fireDate 
          text:(NSString*) alertText 
         action:(NSString*) alertAction 
          sound:(NSString*) soundfileName 
        launchImage:(NSString*) launchImage 
         andInfo:(NSDictionary*) userInfo 

{ 
    UILocalNotification *localNotification = [[UILocalNotification alloc] init]; 
    localNotification.fireDate = fireDate; 
    localNotification.timeZone = [NSTimeZone defaultTimeZone]; 

    localNotification.alertBody = alertText; 
    localNotification.alertAction = alertAction;  

    if(soundfileName == nil) 
    { 
     localNotification.soundName = UILocalNotificationDefaultSoundName; 
    } 
    else 
    { 
     localNotification.soundName = soundfileName; 
    } 

    localNotification.alertLaunchImage = launchImage; 

    //self.badgeCount ++; 
    localNotification.applicationIconBadgeNumber = 1; 
    localNotification.userInfo = userInfo; 

    // Schedule it with the app 
    [[UIApplication sharedApplication] scheduleLocalNotification:localNotification]; 
    [localNotification release]; 
} 


#pragma mark Singleton Methods 

+ (id)allocWithZone:(NSZone *)zone 
{ 
    return [[self sharedInstance]retain]; 
} 


- (id)copyWithZone:(NSZone *)zone 
{ 
    return self;  
} 

- (id)retain 
{ 
    return self;  
} 

- (unsigned)retainCount 
{ 
    return NSUIntegerMax; //denotes an object that cannot be released 
} 

- (void)release 
{ 
    //do nothing 
} 

- (id)autorelease 
{ 
    return self;  
} 

@end 

回答

0

我真的没有看到任何你的代码错误。确保你的火焰不是零。这里是工作代码的形式我的应用程序之一:

notif = [[UILocalNotification alloc] init]; 
NSDateFormatter *df = [[NSDateFormatter alloc] init]; 
[df setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 
NSDate *raceDate = [df dateFromString:[raceDates objectAtIndex:i]]; 
notif.fireDate = raceDate; 
notif.timeZone = [NSTimeZone timeZoneWithName:@"WAT"]; 

notif.alertBody = NSLocalizedString(@"NotificationBody", @""); 
notif.alertAction = NSLocalizedString(@"NotificationButton", @""); 
notif.soundName = @"push.aif"; 

[[UIApplication sharedApplication] scheduleLocalNotification:notif]; 
[notif release]; 

而且,我不知道这是否是必需的,但你的应用程序可能需要多任务启用。

+0

谢谢,我会尝试一下代码。我的“应用程序不在后台运行”已设置。这是唯一的多任务属性吗?因为它仍然不起作用。 – AYBABTU 2011-03-29 01:16:44

+0

我不知道为什么,但你的代码做到了!这花了我太久了!几个小时的绝望! – AYBABTU 2011-03-29 01:27:32

+0

我在开始时也遇到了很多问题。这比本来要困难得多。很高兴我能帮上忙! – 2011-03-29 18:11:21