Во-первых: у меня iPad Air 2 и iPhone 7. Для дальнейшего чтения мы оцениваем, что приложение активно и открыто на iPad и в фоновом режиме на iPhone. Приложение точно такое же, даже с теми же идентификаторами UUID службы Bluetooth и тем же DataLocalNameKey.Реклама на CoreBluetooth в фоновом режиме на iOS 10
Я хочу написать приложение, которое может рекламировать услугу Bluetooth в фоновом режиме и может открыть эту услугу (оптимально и в фоновом режиме). As I already read Я не могу использовать технологию beacon яблок, потому что там можно получить сканирование/уведомление маяками в фоновом режиме (я тестировал это, отлично работает), но не для рекламы. Поэтому я начал использовать CoreBluetooth, как описано в вышеупомянутом ответе SO, потому что там можно рекламировать в фоновом режиме.
Мое приложение вызывает didDiscoverPeripheral
метод в CBCentralManagerDelegate на iPhone (приложение в фоновом режиме), поэтому он обнаружил iPad. Свойство CBPeripheralManager на iPhone - isAdvertising
- true
. Но didDiscoverPeripheral
не вызывается на iPad. Я немного смущен. Один из вариантов - мой iPad не может больше обнаруживать iPhone по некоторым причинам или мой iPhone лежит, и это не реклама.
Так что я думал, что я просто немного глуп и искал Google для приложений отладки CoreBluetooth. Я нашел Vicinity и AltBeacon. И с обоими приложениями поведение одинаково! Если вы воспользуетесь фоном (нажмите кнопку «домой/сна») рекламного приложения, приложение просмотра больше не сможет его обнаружить. Если вы откроете фоновое приложение, оно мгновенно откроет его. В обоих приложениях упоминается, что с ними можно транслировать в фоновом режиме.
Я делаю что-то неправильно; такое поведение ожидается? Я неправильно понял рамки? Можете ли вы подтвердить это поведение?
Для подтверждения этого самым быстрым способом является установка Vicinity на двух устройствах (вы должны добавить ключ NSBluetoothPeripheralUsageDescription
в Info.plist), чтобы установить одно устройство для трансляции и нажать кнопку «Домой».
Хорошо. Я добавил службу моему рекламодателю, например 'cbPeripheralManager! .add (CBMutableService (type: random cbuuid, primary: true)). И я добавил этот uuid к 'scanForPeripheralsWithServices'. Итак, все упомянутое яблоко заполнено здесь: на стороне рекламы есть ServiceUUID, и у меня есть устройство iOS, которое явно сканирует его. Не работайте в любом случае. – flashspys
В области переполнения может быть недостаточно места, если у вас установлены другие приложения, которые рекламируются в фоновом режиме. Попробуйте удалить эти приложения, так как кажется, что вы попробовали несколько. – davidgyoung
Я удалил все свои приложения и переустановил приложение dev. Ничего не изменилось – flashspys