Помогите с локальными уведомлениями! - PullRequest
0 голосов
/ 29 марта 2011

Я попробовал множество блогов, но по какой-то причине он не срабатывает!

Может ли это быть, потому что я не спрашиваю разрешения?Должен ли я попросить пользователя для локальных?Из документации Apple я понимаю, что не знаю.

Это мой класс синглтона (проверено, он называется - с точкой останова)

    //
//  «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

1 Ответ

0 голосов
/ 29 марта 2011

Я не вижу ничего плохого в вашем коде.Убедитесь, что ваш Firedate не является нулевым.Вот рабочий код одного из моих приложений:

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];

Кроме того, я не уверен, требуется ли это, но в вашем приложении может быть включена многозадачность.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...