Как получить рекламные данные маяков в фоновом режиме iOS - PullRequest
0 голосов
/ 21 января 2019

Я пытаюсь реализовать приложение, которое просто обнаруживает маяк и отображает уведомление, когда приложение находится в фоновом режиме.

Первоначально я реализовал CBCentralManager и получил события в didDiscoverPeripheral, который работал отлично, но как только онпереходит в фоновый режим и перестает получать события.

Поскольку фоновый режим является требованием, я реализовал CLLocationManager.Я пометил местоположение, background-central и background-периферийные как фоновые режимы в info.plistЯ также добавил NSLocationAlwaysUsageDescription, NSLocationAlwaysAndWhenInUseUsageDescription и NSLocationWhenInUsageDescription в info.plist.

Соответствующий код похож на следующий:

locMgr = new CLLocationManager();
locMgr.PauseLocationUpdatesAutomatically= false;
locMgr.RequestAlwaysAuthorization();
locMgr.AllowsBackgroundLocationUpdates = true;

var nsuuid = new NSUuid(uuid.ToString());
var nsidentifier = new NSString(identifier);

CLBeaconRegion region = new CLBeaconRegion(nsuuid, nsidentifier);
region.NotifyOnExit = truel
region.NotifyOnEntry = true;
region.NotifyEntryStateOnDisplay = true;

locMgr.StartMonitoring(region);


public void OnRegionEntered(object sender, CLRegionEventARgs e)
{
    is there anyway to get advertising info (instance id) of beacon in here?
    anything to identify the beacon besides the proximity id which is the same for multiple beacons?
}

У меня есть внутренний сервер, содержащий дополнительную информацию, которая содержит дополнительную информациюхотел бы позвонить, чтобы получить имя / сообщение.но это связано с идентификатором экземпляра маяка.

Кто-нибудь знает, как получить информацию о маяке в фоновом режиме?Могу ли я подключиться к периферийному устройству или настроить cblcentralmanager в OnRegionEntered или любым другим способом?

Спасибо за любую помощь!

Ответы [ 2 ]

0 голосов
/ 22 января 2019

Вы можете просто запустить дальность маяка одновременно с началом мониторинга маяка.В дополнение к этому:

locMgr.StartMonitoring(region)

Сделайте это:

locMgr.StartRangingBeacons(in: region)

Если вы сделаете это, то в течение примерно 10 секунд послепри первом обнаружении области маяка (даже в фоновом режиме) вы получите обратный вызов для следующего метода делегата с частотой один раз в секунду:

didRange(beacons: beacons, region: region)

Приведенный выше параметру маяков будет массив всех маяков, соответствующих этому региону как CLBeacon объектов, и каждый из них будет содержать полные идентификаторы: бесконтактный, младший, младший

0 голосов
/ 21 января 2019

Вы можете настроить тихое push-уведомление в ios.В котором вы должны создать один веб-сервис, который будет принимать широту и долготу из приложения после определенного промежутка времени и возвращать список доступных маяков, окруженных определенным регионом для этой широты и долготы.

Чем после, вы должныреализовать этот метод в классе делегата приложения:

приложение func (_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data)

Этот метод будет вызываться, когда ваше приложение получит любое push-уведомление от сервера.Вы должны обновить свое приложение в соответствии с полученным списком.

...