secon'2016. Кардава Звиад, Концепция physical web. eddystone format....

Post on 13-Feb-2017

339 Views

Category:

Mobile

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Google’s Beacon platform

Physical Web

Маячки (от англ. beacon)

How it works?

Beacons

iBeacon by Apple

AltBeacon by RadiusNetworks

1. Транслирует только 1 advertising packet

2. Нужно ставить стороннее приложение (КАЖДЫЙ РАЗ!)

3. Назойливость

4. Безопасность

Disadvantages

https://github.com/google/eddystone

Eddystone

Eddystone-UID Eddystone-URL Eddystone-TLM Eddystone-EID

Eddystone-ETLM

1 byte frame type = 0x001 byte Tx power at 0 m

10 byte - Namespace ID6 byte - Instance ID

2 bytes reserved

1 byte frame type = 0x011 byte Tx power at 0 m

18 byte only 1 byte - URL prefix:

0x00 - http://www0x01 - https://www0x02 - http://0х03 - https://

1 byte TLM version = 0x00

16 bit random salt16-bit integrity check tag

1 byte frame type = 0x201 byte TLM version = 0x00

Battery voltageBeacon temperatureAdvertising PDU countTime since power-on

1 byte frame type = 0x201 byte TLM version = 0x00

8-byte Ephemeral Identifier

Eddystone Configuration GATT Service● Интероперабельность ● Single connection● Characteristics:

7. Unlock

8. Public ECDH Key

9. EID Identity Key

10. ADV Slot Data

11. (Advanced) Factory reset

12. (Advanced) Remain Connectable

1. Capabilities

2. Active Slot

3. Advertising Interval

4. Radio Tx Power

5. (Advanced) Advertised Tx Power

6. Lock State

https://github.com/google/eddystone/tree/master/configuration-service

Physical Web

https://google.github.io/physical-web/

Internet of Things

Interaction today

Smart Things

Smart Things

URL

URL

URL

Physical Web Service

1. Classic Web

2. Cloud Passtrough

JavaScript

3. Web Bluetooth

Web

Web

Web

Web

Super Power of WEB

Physical Web

What you need?

Physical Web

Beacons Configuration

● Простая идея● Просто реализуется● Работает● Уважение к пользователю● Открытый проект● Улучшается вместе с Web

The Physical Web

Google’s beacon platform

Google’s Beacon Platform

Google Cloud Platform

Proximity beacon API

Proximity API

Proximity API

● Advertised ID должен быть корректным Eddystone-UID

● (16 байт, содержащих 10 байт namespaceId и 6 байт instance Id).

● Значение Advertised ID должно быть base64 представлением данных.

● Маячки представлены в виде ресурса beacon и могут быть зарегистрированы

вызовом метода beacons.register.

● Маячок может быть зарегистрирован одновременно только в одном проекте в

Google Developers Console

● Как только маячок зарегистрирован, его поле AdvertisedID не может быть

изменено.

Advertised ID

● Advertised ID (обязательно)

● Текущий статус — активный, не активный, выведенный из эксплуатации.

● Стабильность — выражает ожидаемую стабильность размещения. (Стабильный,

редко перемещаемый, часто перемещаемый, постоянно перемещающийся)

● Широта и долгота — пара double представляющих значение в градусах. Должны

соответствовать представлению WGS84, если не указано иное. Значения должны

быть в пределах нормализованных диапазонов.

● Уровень внутри здания — человеко читаемая строка, что бы указать на каком

этаже расположен маячок.

● Google Places API Place ID

● Текстовое описание

● Произвольные свойства, такие как пара ключ/значение

Metadata

К маячкам можно привязывать произвольные данные(Attachments). Они представляют и себя блобы, хранимые в Google’s scalable cloud.

При создании вложения вам нужно заполнить два поля:● namespacedType — строка состоящая из идентификатора пространства

имён, косой черты и типа данных. Напирмер: surreptitious-banjo-145/string

● data — base64 представление типа данных определенного в поле namespacedType. Например: aGVsbG8gd29ybGQh

Что бы выяснить какие пространства имён связанны с вашим проектом можно вызвать namespaces.list

Вложения могут быть длиной до 1024 байт.

Register a beacon

Маячок не может быть просто удален из Google Beacons Registry. Есть два варианта как можно перевести маячок в режим офлайн:

● beacons.deactivate для того что бы временно удалить маячок. После

деактивации, API не будет возвращать ни привязанные данные, ни

информацию по маячку. Для того что вернуть маяк в рабочее состояние

нужно вызвать beacons.activate

● beacons.decommission что бы навсегда деактивировать beacon ID. Вы

больше не сможете использовать ID с которым он был ранее

зарегистрирован. Но вы можете легко назначить маячку новый ID и

перерегистрировать маячок с новым ID

Unregister a beacon

Nearby messages API

1. Google Play services ≥ 7.8.0

2. Подписка на сообщения: ● В активном режиме ● В фоновом режиме

3. Запрос разрешения у пользователя:● Присоединить result callback к вызовам publish() and subscribe().● Использовать Nearby.Messages.getPermissionStatus() что бы проверить

статус разрешения непосредственно перед вызовом publish() или subscribe()

4. Стратегии сканирования

Nearby messages on Android

1. $ sudo gem install cocoapodssource 'https://github.com/CocoaPods/Specs.git'platform :ios, '7.0'pod 'NearbyMessages

$ pod install

2. Подписка на сообщения: ● Только в активном режиме

3. Стратегии сканирования

Nearby messages on iOS

Links

● https://google.github.io/physical-web/● https://developers.google.com/beacons/● https://github.com/google/eddystone● https://developers.google.com/beacons/proximity/guides● https://developers.google.com/nearby/messages/overview

● https://habrahabr.ru/post/279381/○ моя статья на хабре про proximity api

● https://habrahabr.ru/post/279379/○ моя статья на хабре про nearby messages api

● https://habrahabr.ru/post/281877/○ моя статья на хабре про Eddystone-EID

Tahnk you!

Google Developer Expert:Internet of Things

email: zviadkardava@gmail.com google+: zviadkardava twitter: zviadkardava

top related