如何从服务器向应用程序添加信标

How to add beacons to the app from server

我已经使用信标创建了一个应用程序并且我已经配置了它们的 UUID,应用程序本身的主要值并且一切正常。它也在进行后台监控。

一旦应用程序确定了信标,应用程序就会使用网络服务将信标 UUID、主要、次要和接近级别信息发送到服务器,作为响应,它会获取产品详细信息以显示给用户。

但我的问题是如何从 Web 服务添加信标详细信息。这样我就不需要每次在应用商店中添加新的信标时都在应用商店中更新我的应用。

如果应用中没有信标详情,如何进行后台监控?我们是否需要在每次打开应用程序时调用信标详细信息网络服务?

我不知道如何实现。我是信标功能的新手。

这是我现在的代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    NSUUID *beaconUUID1 = [[NSUUID alloc] initWithUUIDString:@"B9407F30-F5F8-466E-AFF9-25556B57FE6D"];

    CLBeaconRegion *beaconRegion1 = [[CLBeaconRegion alloc] initWithProximityUUID:beaconUUID1 major:2 identifier:@"Identifier1"];
    CLBeaconRegion *beaconRegion2 = [[CLBeaconRegion alloc] initWithProximityUUID:beaconUUID1 major:3 identifier:@"Identifier2"];

    switch ([CLLocationManager authorizationStatus]) {
        case kCLAuthorizationStatusAuthorizedAlways:
            NSLog(@"Authorized Always");
            break;
        case kCLAuthorizationStatusAuthorizedWhenInUse:
            NSLog(@"Authorized when in use");
            break;
        case kCLAuthorizationStatusDenied:
            NSLog(@"Denied");
            break;
        case kCLAuthorizationStatusNotDetermined:
            NSLog(@"Not determined");
            break;
        case kCLAuthorizationStatusRestricted:
            NSLog(@"Restricted");
            break;        
        default:
            break;
    }

    self.locationManager = [[CLLocationManager alloc] init];
    if([self.locationManager respondsToSelector:@selector(requestAlwaysAuthorization)]) {
        [self.locationManager requestAlwaysAuthorization];
    }

    self.locationManager.delegate = self;
    self.locationManager.pausesLocationUpdatesAutomatically = NO;

    [self.locationManager startMonitoringForRegion:beaconRegion1];
    [self.locationManager startRangingBeaconsInRegion:beaconRegion1];

    [self.locationManager startMonitoringForRegion:beaconRegion2];
    [self.locationManager startRangingBeaconsInRegion:beaconRegion2];

    [self.locationManager startUpdatingLocation];

    CBCentralManager* testBluetooth = [[CBCentralManager alloc] initWithDelegate:nil queue: nil];

}

更多信息:- 我使用的是 Estimote 信标,而不是他们的 SDK。我只使用核心定位框架。

任何人都可以清楚地说明如何从服务器实现动态信标的详细信息吗?

如果您想自己执行此操作,请执行以下基本步骤:

  1. didFinishLaunchingWithOptions 设置任何信标监控之前,进行异步 Web 服务调用以从服务器获取配置信息。

  2. 当您从 Web 服务获得成功回调时,解析响应,根据它 returns 设置您的 CLBeaconRegions,然后开始监控和测距。

  3. (可选)您可能希望实现这些区域的持久存储(例如到 sharedPreferences),并在成功调用 Web 服务后存储它们。这样,如果您无法联系 Web 服务,您可以简单地从持久存储中加载区域并使用最后已知的副本。

我公司有一个名为 ProximityKit 的产品可以为您(以及更多)完成所有这些工作,因此如果您有兴趣使用一个框架,它可能比自己动手更容易。