gpt4 book ai didi

ios - 在 didRangeBeacons 方法中触发推送通知

转载 作者:行者123 更新时间:2023-11-29 02:48:40 26 4
gpt4 key购买 nike

我正在使用 Estimote 信标开发应用程序,所以我有三个信标,一个用于进入,第二个用于退出,第三个用于消息。我想根据接近用户的情况触发推送通知,所以我收到推送通知,但问题是它给出多个相同的通知。所以我使用 NSUserDefault 来停止多个推送通知,但它也不起作用,所以我怎样才能停止这个问题。我还检查了本地通知,但它也给了我多个本地通知。

代码:-

-(void)beaconManager:(ESTBeaconManager *)manager
didRangeBeacons:(NSArray *)beacons
inRegion:(ESTBeaconRegion *)region

{
if ([beacons count] == 0)
return;

ESTBeacon* beacon = [beacons firstObject];
int dist = [beacon.distance intValue];
if([region.identifier isEqualToString:BeaconIdentifier2]){

switch (beacon.proximity) {

case CLProximityUnknown:{

[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Far"];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Near"];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Immediate"];
[[NSUserDefaults standardUserDefaults] synchronize];

if([[[NSUserDefaults standardUserDefaults] valueForKey:@"Unknown"] isEqualToString:@"FALSE"])
{
[[NSUserDefaults standardUserDefaults] setObject:@"TRUE" forKey:@"Unknown"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSLog(@"Call Unknown");

[self callPush];
}

}
break;

case CLProximityFar:{

[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Unknown"];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Near"];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Immediate"];
[[NSUserDefaults standardUserDefaults] synchronize];

if([[[NSUserDefaults standardUserDefaults] valueForKey:@"Far"] isEqualToString:@"FALSE"])
{
[[NSUserDefaults standardUserDefaults] setObject:@"TRUE" forKey:@"Far"];
[[NSUserDefaults standardUserDefaults] synchronize];
//Call webservice
[self callPush];

}

}
break;

case CLProximityNear:{

[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Unknown"];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Far"];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Immediate"];
[[NSUserDefaults standardUserDefaults] synchronize];

if([[[NSUserDefaults standardUserDefaults] valueForKey:@"Near"] isEqualToString: @"FALSE"])
{
[[NSUserDefaults standardUserDefaults] setObject:@"TRUE" forKey:@"Near"];
[[NSUserDefaults standardUserDefaults] synchronize];

//Call webservice
[self callPush];

}
}
break;

case CLProximityImmediate:{

[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Unknown"];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Far"];
[[NSUserDefaults standardUserDefaults] setObject:@"FALSE" forKey:@"Near"];
[[NSUserDefaults standardUserDefaults] synchronize];

if([[[NSUserDefaults standardUserDefaults] valueForKey:@"Immediate"] isEqualToString:@"FALSE"])
{
[[NSUserDefaults standardUserDefaults] setObject:@"TRUE" forKey:@"Immediate"];
[[NSUserDefaults standardUserDefaults] synchronize];

//Call webservice
[self callPush];

}
}
break;
}
}

}

提前致谢。

最佳答案

试试这个,

BOOL isFar=TRUE;
- (void)locationManager:(CLLocationManager *)manager
didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region{

if (self.beaconRegion) {
if([beacons count] > 0)
{
//get closes beacon and find its major
CLBeacon *beacon = [beacons objectAtIndex:0];
switch (beacon.proximity)
{
case CLProximityUnknown:
break;
case CLProximityImmediate:
NSLog(@"Immediate");

if (isFar) {
isFar=false;
// Call WebService

}
break;
case CLProximityNear:
if (isFar) {
// Call WebService
}
isFar=false;
break;
case CLProximityFar:
NSLog(@"far");
if (!isFar) {
// call websercie
}
isFar=TRUE;
break;
default:
break;
}


}
}


}

关于ios - 在 didRangeBeacons 方法中触发推送通知,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24799409/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com