2013-05-07 63 views

回答

0

你不能直接从应用程序那样做。如果你想这样做,你需要让UISwitch将信息发送到后端,将这些信息存储在数据库中,并停止向该用户发送推送通知。

+0

不......那不是我的意思。我希望交换机初始化推送通知。我激活交换机,然后在应用程序注册推送通知时获取库存UIAlertView – 2013-05-07 20:23:27

0

应用程序首次启动时会为推送通知(APN)注册。一旦交换机启动后,您就无法使用交换机初始化APN。但是,您可以编写您的应用程序,以便在收到APN后,交换机可以选择在用户界面上执行“某些事情”。

例如,你可以有这样的代码:

-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 
{ 
NSDictionary *apsInfo = [userInfo objectForKey:@"aps"]; 
NSString *alert = [apsInfo objectForKey:@"alert"]; 
// do what you need with the data... 
[[NSNotificationCenter defaultCenter] postNotificationName:@"ReceivedNotificationAlert" object:self]; 
} 

您可以使用UISwitch要么做一些事情,或者不与NSNotification“ReceivedNotificationAlert”。例如:

if(switchAPNprocess.on){ 
// process APN 
} 
else { 
// ignore APN 
} 
1
You can also do it in the following way. 
create a IBOutlet for UISwitch 

@property (strong, nonatomic) IBOutlet *pushNotificationSwitch; 

and in Action method, store the value in NSUserDefaults. 


- (IBAction)pushNotificationSwitchChanged:(id)sender 
{ 
    NSNumber *switch_value = [NSNumber numberWithBool:[self.pushNotificationSwitch isOn]]; 
    [[NSUserDefaults standardUserDefaults] setObject:switch_value forKey:RECIEVE_APNS]; 
    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

and check it in viewdidload. 



- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 


    // Do any additional setup after loading the view from its nib. 

    NSNumber *sett = [[NSUserDefaults standardUserDefaults] valueForKey:RECIEVE_APNS]; 
    if([sett boolValue]) 
    { 

     [self.pushNotificationSwitch setOn:YES]; 

    } 
    else{ 
     [self.pushNotificationSwitch setOn:NO]; 
    } 

} 

and In AppDelegate.m, add the following code 

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo 

{ 

    NSNumber *sett = [[NSUserDefaults standardUserDefaults] objectForKey:RECIEVE_APNS]; 
    if([sett boolValue]) 
    { 
     int currentBadgeCount = [[NSUserDefaults standardUserDefaults] integerForKey:@"BadgeCount"]; 

     //Set the baadge count on the app icon in the home screen 
     int badgeValue = [[[userInfo valueForKey:@"aps"] valueForKey:@"badge"] intValue]; 
     [UIApplication sharedApplication].applicationIconBadgeNumber = badgeValue + currentBadgeCount; 
     [[NSUserDefaults standardUserDefaults] setInteger:badgeValue + currentBadgeCount forKey:@"BadgeCount"]; 

     NSString *alertString = [[userInfo objectForKey:@"aps"] objectForKey:@"alert"]; 
     NSString *playSoundOnAlert = [NSString stringWithFormat:@"%@", [[userInfo objectForKey:@"aps"] objectForKey:@"sound"]]; 
     NSURL *url = [NSURL fileURLWithPath:[NSString stringWithFormat:@"%@/%@",[[NSBundle mainBundle] resourcePath],playSoundOnAlert]]; 
     NSError *error; 

     if (alertString.length > 0) 
     { 
      UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"App Name" message:alertString delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil]; 
      audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:url error:&error]; 
      audioPlayer.numberOfLoops = 1; 
      [audioPlayer play]; 
      [alert show]; 
     } 

    } 
} 

    enter code here