响应来自beacon的appDelegate通知

时间:2014-06-22 22:21:31

标签: xcode5 ibeacon nsnotifications

我正在尝试使用应用程序通知用户是否有其他具有相同应用程序的设备上的某人愿意与他们建立联系。我在应用程序中设置了接收信标,还有一个位置管理器通知,发送给应用代表进行显示。如果收到通知的人点击确定按钮,我想要采取行动。这是我的一些代码。

//在BeaconViewController中设置接收器信标

NSUUID * uid2 = [[NSUUID alloc] initWithUUIDString:@"3B257014-2C29-40E0-8E1E-1D7A9E5D0964"];
        self.beaconRegion2 = [[CLBeaconRegion alloc] initWithProximityUUID:uid2 identifier:@"com.checkers.bluetooth"];
       [self.beaconRegion2 setNotifyEntryStateOnDisplay:YES];
        [self.beaconRegion2 setNotifyOnEntry:YES];
        [self.beaconRegion2 setNotifyOnExit:YES];

//将通知发送给应用代表

-(void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region {

    // See if we've entered the region.
    if ([region.identifier isEqualToString:@"com.checkers.bluetooth"]) {
        UILocalNotification * notification = [[UILocalNotification alloc] init];
        notification.alertBody = @"Want to play checkers?";

       [[UIApplication sharedApplication] presentLocalNotificationNow:notification];
    }
}

//在AppDelegate中我设置了通知

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.locationManager = [[CLLocationManager alloc]init];
    self.locationManager.delegate= self;
    // Override point for customization after application launch.
    return YES;
}

-(void)application:(UIApplication *)application didReceiveLocalNotification:(UILocalNotification *)notification {
    AlertView= [[UIAlertView alloc] initWithTitle:@"Play a Game?"
                                                  message:notification.alertBody
                                                 delegate:NULL
                                        cancelButtonTitle:@"OK"
                                        otherButtonTitles:@"CANCEL", nil];
    [AlertView show];

        if ([notification.alertBody isEqualToString:@"Want to play Chess?"]) {
            messageString = @"chess";
            NSLog(@"messageSting:%@",messageString);
        }}

//我接下来试着找出" OK"按下按钮

  -(void) alertView:(UIAlertView *)alertView didDismissWithButtonIndex:(NSInteger)buttonIndex{

   if (buttonIndex == 0) {
   if ([messageString isEqualToString:@"chess"]) {
        messageString3 = @"Play Chess";
    }
    }
    }

//最后在BeaconViewController中我想得到这个传递的结果所以我可以在这个视图控制器中创建一个动作

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
        messageString2 = appDelegate.messageString3;
        NSLog(@"messageSting2:%@",messageString2);

我收到通知,我可以识别notification.alertBody,但是我无法找到正在点击的按钮,或者通过点击通知上的按钮为messageString3分配值。

有人可以帮忙吗。

1 个答案:

答案 0 :(得分:0)

所以我想出来了。两件事情 1.我创建并合成了UIAlertView,所以我可以参考我想要的那个。 2.如果查看alertView,它将委托设置为NULL,并且应设置为self。

一旦我做了这两件事,一切都很顺利。