두 사람이 블루투스를 통해 게임을 할 수있게 해주는 앱이 있습니다. 한 명의 플레이어가 재생 초대장을 보내면 휴대 전화가 신호로 바뀝니다. 이 비컨이 켜지면 다른 사람과 앱 (범위 내에있는 경우)이 범위를 넘었고 알림이 팝업됩니다. 앱이 열려있을 때 효과적입니다. 그러나 앱이 백그라운드에있을 때 알림은 수신되지만 앱을 다시 깨울 때까지 사용자에게 표시되지 않습니다. 앱이 백그라운드 모드에있을 때 알림이 표시되거나 소리가 재생되거나 둘 다 재생되도록하려면 어떻게해야합니까?백그라운드 iOS에서 비컨 알림 받기 Xcode
다음은 region.state를 수신하고 알림을 표시하는 데 사용하는 코드입니다.
-(void)locationManager:(CLLocationManager*)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion*)region{
NSLog(@"manager didDetermineState state forRegion");
UILocalNotification *notification = [[UILocalNotification alloc]init];
if(state == CLRegionStateInside){
NSLog(@"region.identifier;%@",region.identifier);
if ([region.identifier isEqualToString:@"com.checkers.bluetooth"]) {
NSLog(@"region.identifier;%@",region.identifier);
[UIView animateWithDuration:1 delay:0 options:UIViewAnimationOptionCurveEaseIn animations:^{
if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){
if([UIScreen mainScreen].bounds.size.height == 480.0){
inviteCheckers.frame = CGRectMake(147,95 *.84,20,20);
}
else {
inviteCheckers.frame = CGRectMake(147,95,20,20);}
}
else if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad){
inviteCheckers.frame = CGRectMake(64+294,145,40,40);
}
} completion:^ (BOOL completed) {
경우 ([YOURNAME isEqualToString : @ "없음"]) { notification.alertBody = @ ".. 당신은 체커를 재생 초대 사람을 놓친 내가 게임을하고 있는데 보내 nOpen 초대 \"; [[UIApplication sharedApplication] presentLocalNotificationNow : 알림]; } else { NSString * nameString1 = yourName; NSString * nameString2 = [nameString1 stringByAppendingString : @ "체커를 원합니다."]; notification.alertBody = nameString2; AlertView = [[UIAlertView alloc] initWithTitle : @ "게임하기?" 메시지 : notification.alertBody
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:@"CANCEL", nil];
[self.AlertView setBackgroundColor:[UIColor clearColor]];
[AlertView show];} } ];
identifierString = region.identifier;
messageString2 = @"checkers";
recieve.hidden = NO;
}
이 내가이 작업을 사용하는 것 같다하지만 지금은 그렇지 않은
- (void)applicationDidEnterBackground:(UIApplication *)application
{
if ([backgroundstring isEqualToString:@"fire"]) {
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = @"Someone wants to play a game.";
[[UIApplication sharedApplication] presentLocalNotificationNow:notification];
}
}
새로운 코드를 추가한다 //. plist에서 백그라운드 모드로 위치 정보를 업데이트했습니다. 권한을 얻습니다. 앱이 백그라운드에있을 때 초대가 있지만 이름이 기록되지 않고 알림이 표시되지만 포 그라운드에서는 그 사람의 이름이 알림으로 표시됩니다.
@ "no fire"에서 변경되는 backgroundstring을 추가했습니다. 발사"; 경고 알림이 오면 작동합니다. 그리고 backgroundstring이 @ "fire"일 때 지역 알림을 보내려고했습니다. (위의 코드 참조) 아무 일도 일어나지 않습니다. 나는 뭔가를 놓치고 있지만 무엇을 모르겠다. – user1114881
힌트를 주셔서 감사합니다. 내가 한 일을 반영하도록 코드를 게시 할 것입니다. – user1114881