![](https://habrastorage.org/files/dcb/a44/996/dcba449969c544329ddd92b68f27e5f0.png)
ãã®èšäºãèªãåã«ãååã®èšäºã ãã£ãžã«ã«ãŠã§ãã®æŠå¿µãã§èª¬æãããã£ãžã«ã«ãŠã§ãã®æŠå¿µãç解ããããšããå§ãããŸãã BluetoothããŒã³ã³ã iBeaconãAltBeaconãããã³Eddystoneæšæºã®æ¯èŒ ã
Googleã®ããŒã³ã³ãã©ãããã©ãŒã ã ããŒã1-è¿æ¥ããŒã³ã³API
Googleã®ããŒã³ã³ãã©ãããã©ãŒã ã ããŒã2-è¿é£ã®ãããµãŒãžAPI
Googleã®ããŒã³ã³ãã©ãããã©ãŒã ã«ãããç©çWebã®å Žåã®ããã«ããŒã³ã³ãç©ççã«æ¥ç¶ããŠããŒã³ã³ãåæ§æããå¿ èŠããªããªããŸããéåžžã®URLïŒ Eddystone-URL ïŒããããŒããã£ã¹ããããšããããŒã³ã³ã«æ·»ä»ãããæ·»ä»ãã¡ã€ã«ã®ã¿ãå€æŽããããšãã§ããããŒã³ã³ããªã¢ãŒãã§å¶åŸ¡ã§ããŸãã ãã®ãœãªã¥ãŒã·ã§ã³ã«ããããã¹ãŠã®ããŒã³ã³ããªã¢ãŒãã§ç£èŠããããšãã§ããŸãã ãããã©ã®ããã«å®è£ ãããŠããããããã«èª¬æããŸãã
å³ãããããããã«ãããŒã³ã³ã®ç®¡çã®ããã«ã GoogleããŒã³ã³ã¬ãžã¹ããªã«ããã€ã¹ãç»é²ã§ããGoogle Proximity Beacon APIãæäŸãããŠããŸãã ç»é²æžã¿ããŒã³ã³ã«é¢ããæ å ±ãä¿åããŸãã ã¯ã©ã€ã¢ã³ãåŽã§ã¯ãããã€ã¹ãšå¯Ÿè©±ããããã«ã Nearby Messages API ã Places APIããŸãã¯ãã®ä»ã®ä»»æã®è£éã䜿çšããããšããå§ãããŸãã
èŠããã«ããã®åäœæ¹åŒã§ã¯ãããŒã³ã³ã¯åºåID ïŒ Eddystone-UID ïŒããããŒããã£ã¹ãããŸããããã«æ·»ä»ãã¡ã€ã«ïŒ Attachments ïŒããã€ã³ãã§ããŸããããã«ã€ããŠã¯ä»¥äžã§è©³çŽ°ã«èª¬æããŸãã ã¹ããŒããã©ã³ãŸãã¯ã¿ãã¬ããã§ããŒã³ã³ãèŠã€ããåŸã ããŒã³ã³ã¬ãžã¹ããªã§ãã®åºåIDããªã¯ãšã¹ãããŸããçãã¯ãã®æ·»ä»ãã¡ã€ã«ã§ãã ãã®ã·ããªãªã¯ãç¹å¥ãŸãã¯å éšäœ¿çšã®ããã«éå ¬éã¢ããªã±ãŒã·ã§ã³ãäœæããå¿ èŠãããå Žåã«æé©ã§ãã ãŸãã¯ãããã²ãŒã·ã§ã³ãããã€ãã®è¿œå ããŒã¿ã®åä¿¡ãªã©ããŠãŒã¶ãŒã«äººæ°ã®ããæ¢åã®ã¢ããªã±ãŒã·ã§ã³ã«ããŒã³ã³ãæäœããæ©èœãè¿œå ããå Žåã
ã€ãŸã ééããªãã¢ããªã±ãŒã·ã§ã³ãå¿ èŠã§ããã Physical Webã¯ã©ãã§ããïŒ
Eddystone-URLãŸãã¯Eddystone-UIDãªã© ãäžéšã®ããŒã³ã³ã¯åæã«2çš®é¡ã®ãã±ãããéä¿¡ã§ãããããè¿œå ã®ã¡ã¿ããŒã¿ãã¢ããªã±ãŒã·ã§ã³ã«æäŸããã¢ããªã±ãŒã·ã§ã³ãæããªããŠãŒã¶ãŒã«ã¢ããªã±ãŒã·ã§ã³èªäœãæäŸã§ããŸãïŒ
Google Proximity Beacon API
Google Proximity Beacon APIã¯ã¯ã©ãŠããµãŒãã¹ã§ããã RESTã€ã³ã¿ãŒãã§ã€ã¹ã䜿çšããŠãããŒã³ã³ããŸãã¯ããŒã³ã³ã«é¢é£ä»ããããããŒã¿ã管çã§ããŸãã
è¿æ¥ããŒã³ã³APIã䜿çšãããšã次ã®ããšãã§ããŸãã
- ããã€ã¹ãç»é²ãã
- ããŒã³ã³ãžã®æ·»ä»ãã¡ã€ã«ã®æ·»ä»
- ããã€ã¹ãç£èŠãã
- ããŒã³ã³ããæ·»ä»ãã¡ã€ã«ãåä¿¡ãã
Proximity Beacon APIã䜿çšããåã«ã次ã®ããšãç解ãŸãã¯ç解ããŠãããšåœ¹ç«ã¡ãŸãã
- OAuth 2.0ã䜿çšããŠGoogle APIã«ã¢ã¯ã»ã¹ãã
- RESTfull WebãµãŒãã¹
- JSONããŒã¿è¡šçŸ
Proximity Beacon APIã䜿çšããã«ã¯ã次ã®5ã€ã®æé ãå®äºããå¿ èŠããããŸãã
- Googleã¢ã«ãŠã³ããäœæãŸãã¯ãã°ã€ã³ããŸã
- Google Developer Consoleã§æ°ãããããžã§ã¯ããäœæããããæ¢åã®ãããžã§ã¯ããéžæããŸã
- Proximity Beacon APIãã¢ã¯ãã£ãã«ããŸã-Google Developer Consoleã§ã[ãããžã§ã¯ãã®éžæ]ãã¯ãªãã¯ããŠã䜿çšãããããžã§ã¯ããéžæããŸãã å·ŠåŽã®ã¡ãã¥ãŒã§ãAPI Managerãã¯ãªãã¯ããŠãããProximity Beacon APIãèŠã€ãããã®ã¹ããŒã¿ã¹ã
enabled
èšå®ããŸã - OAuth 2.0ã¯ã©ã€ã¢ã³ãIDãååŸãã
- API KEYãååŸããŸã ã APIããŒãå®å šã«äœ¿çšããããã®ãã¹ããã©ã¯ãã£ã¹ã«ç²Ÿéããããšã匷ããå§ãããŸã
泚æãgifïŒ ãã©ã°ã©ã1ã2ããã³3
![ç»å](https://habrastorage.org/files/d15/613/c63/d15613c63d484c5682effa98da61f8ba.gif)
泚æãgifïŒ ãã€ã³ã4
![ç»å](https://habrastorage.org/files/503/cee/0e5/503cee0e525a498d88125287ff07d70e.gif)
泚æãgifïŒ ãã€ã³ã5
![ç»å](https://habrastorage.org/files/9e4/2c7/043/9e42c7043012470486498e77e56baec7.gif)
ããŒã³ã³ç»é²
ã¡ãã»ãŒãžããããŒããã£ã¹ãããããã®ããŒã³ã³ã®æå¹åãšåºæ¬èšå®ã®åŸã Proximity Beacon APIã䜿çšããŠç»é²ã§ããŸãã è¿œå ã®ããŒã¿ãæ·»ä»ããŠããŠãŒã¶ãŒã®ããã€ã¹ãã©ãã«ããããç解ããã®ã«åœ¹ç«ã¡ãŸãã GoogleããŒã³ã³ã¬ãžã¹ããªã®ãšã³ããªã«ã¯ã次ã®ã¡ã¿ããŒã¿ãå«ãŸããå ŽåããããŸãã
- åºåID ïŒå¿ é ïŒ
- çŸåšã®ã¹ããŒã¿ã¹-ã¢ã¯ãã£ããéã¢ã¯ãã£ããå»æ¢ã
- å®å®æ§-é 眮ã®äºæ³ãããå®å®æ§ãè¡šããŸãã ïŒå®å®ããã£ãã«åããªããé »ç¹ã«åãã絶ããåãïŒ
- 緯床ãšçµåºŠã¯ãå€ã床åäœã§è¡šãäºéã®ãã¢ã§ãã ç¹ã«æå®ããªãéãã WGS84ã«æºæ ããå¿ èŠããããŸãã å€ã¯æ£èŠåãããç¯å²å ã§ããå¿ èŠããããŸãã
- 建ç©å ã®Uvroenã¯ã人éãèªãã圢åŒã®è¡ã§ãããŒã³ã³ãé 眮ãããŠããéã瀺ããŸãã
- Google Places APIãã¬ã€ã¹ID
- ããã¹ãã®èª¬æ
- ããŒ/å€ã®ãã¢ãªã©ã®ã«ã¹ã¿ã ããããã£
ã¡ã¿ããŒã¿å€ã®è©³çŽ°ã«ã€ããŠã¯ã ãã¡ããã芧ãã ãã ã
ããã¯ãèšäºã®åé ã§èª¬æããéåžžã«è¿œå ã®ã¡ã¿ããŒã¿ã§ãããããã®ã¡ã¿ããŒã¿ã¯ãããŒãºã«åãããŠã¢ããªã±ãŒã·ã§ã³ã§äœ¿çšããããå šäœçãªUXãæ¹åãããã§ããŸãã ããšãã°ã Place Pickerã« Google Places APIã®Place IDã䜿çšã§ããŸãã Place Pickerã¯ãè¿ãã®å Žæãçµç¹ãæœèšãªã©ã®ã€ã³ã¿ã©ã¯ãã£ããªå°å³ã衚瀺ãããã€ã¢ãã°ã§ãã ãŠãŒã¶ãŒã¯ãè¿ãã®å Žæã«é¢ããæ å ±ãååŸãããããœãŒã·ã£ã«ãããã¯ãŒã¯ã§çŸåšããå Žæã®æ å ±ãå ±æãããã§ããŸãã Place Pickerã¯Places APIã®äžéšã§ããã Android ãã©ãããã©ãŒã ãšiOSãã©ãããã©ãŒã ã®äž¡æ¹ã§å©çšã§ããŸã ã
ã¢ããã¿ã€ãºãããIDã¯ãæå¹ãªEddystone-UIDããŒã³ã³èå¥åïŒ10ãã€ãã®namespaceIdãš6ãã€ãã®ã€ã³ã¹ã¿ã³ã¹IDãå«ã16ãã€ãïŒã§ãªããã°ãªããŸããã IDå€ã¯ãããŒã¿ã®base64è¡šçŸã§ãªããã°ãªããŸããã
ããŒã³ã³ã¯ããŒã³ã³ãªãœãŒã¹ãšããŠè¡šããã
beacons.register
ã¡ãœãããåŒã³åºãããšã§ç»é²ã§ããŸãã
ããã§ä»ã®æ¹æ³ãèŠãããšãã§ããŸãã
ããŒã³ã³ã¯ã Google Developers Consoleã§äžåºŠã«1ã€ã®ãããžã§ã¯ãã«ã®ã¿ç»é²ã§ããŸãã ããŒã³ã³ãå床ããŸãã¯å¥ã®ãããžã§ã¯ãã§ç»é²ããããšãããšããšã©ãŒãçºçããŸãã ããŒã³ã³ãç»é²ããããšããã®
AdvertisedID
ãã£ãŒã«ãã¯å€æŽã§ããŸããã
ãããã£ãŠãç»é²ããåã«ããŒã³ã³ãé©åã«æ§æããŠãã ããã
äŸã¯ãç¹å®ã®å Žæã§EddystoneããŒã³ã³ãç»é²ããæ¹æ³ã瀺ããŠããŸãã
HTTPã¡ãœããïŒ
ãªã¯ãšã¹ãURLïŒ
ãªã¯ãšã¹ãæ¬æïŒ
å¿çïŒ
ãã¹ãŠãããŸããã£ãå Žåãçãã¯ã¹ããŒã¿ã¹ã³ãŒã
ãŸãã å¿çæ¬æã«ã¯ãå€
ãå«ãããŒã³ã³JSONè¡šçŸãå«ãŸããŸããããã¯ãããŒã³ã³ãå¶åŸ¡ããããã®åç §ãšããŠäœ¿çšã§ããŸãã
POST
ãªã¯ãšã¹ãURLïŒ
https://proximitybeacon.googleapis.com/v1beta1/beacons:register
ãªã¯ãšã¹ãæ¬æïŒ
{ "advertisedId": { "type": "EDDYSTONE", "id": "Fr4Z98nSoW0hgAAAAAAAAg==" }, "status": "ACTIVE", "placeId": "ChIJTxax6NoSkFQRWPvFXI1LypQ", "latLng": { "latitude": "47.6693771", "longitude": "-122.1966037" }, "indoorLevel": { "name": "1" }, "expectedStability": "STABLE", "description": "An example beacon.", "properties": { "position": "entryway" } }
å¿çïŒ
ãã¹ãŠãããŸããã£ãå Žåãçãã¯ã¹ããŒã¿ã¹ã³ãŒã
200
ãŸãã å¿çæ¬æã«ã¯ãå€
beacon.beaconName
ãå«ãããŒã³ã³JSONè¡šçŸãå«ãŸããŸããããã¯ãããŒã³ã³ãå¶åŸ¡ããããã®åç §ãšããŠäœ¿çšã§ããŸãã
ç»é²è§£é€
ããŒã³ã³ãç»é²ããããšã GoogleããŒã³ã³ã¬ãžã¹ããªããåçŽã«åé€ããããšã¯ã§ããŸããã ããŒã³ã³ããªãã©ã€ã³ã«ããæ¹æ³ã«ã¯2ã€ã®ãªãã·ã§ã³ããããŸãã
- ãããžã§ã¯ãããããŒã³ã³ãäžæçã«åé€ããã«ã¯ã
beacons.deactivate
ãåŒã³åºããŸãã éã¢ã¯ãã£ãååŸãAPIã¯ãã€ã³ããããããŒã¿ãŸãã¯ããŒã³ã³æ å ±ãè¿ããŸããã ããŒã³ã³ãåäœç¶æ ã«æ»ãã«ã¯ãbeacons.activate
ãåŒã³åºãå¿ èŠããããŸã -
beacons.decommission
ãåŒã³åºããŠããããžã§ã¯ãã®ããŒã³ã³IDãæ°žä¹ ã«ç¡å¹ã«ããŸãã 以åã«ç»é²ãããIDã¯äœ¿çšã§ããªããªããŸãã ãã ããããŒã³ã³ã«æ°ããIDãç°¡åã«å²ãåœãŠãæ°ããIDã§ããŒã³ã³ãåç»é²ã§ããŸã
ããŒã³ã³ãžã®æ·»ä»ãã¡ã€ã«ã®è¿œå
ããŒã³ã³ãç»é²ããããšã次ã®ã¹ãããã®æºåãæŽããŸãã
AttachmentsãšåŒã°ããããŒã³ã³ã«ä»»æã®ããŒã¿ããã€ã³ãã§ããŸãã ãããã¯ã Googleã®ã¹ã±ãŒã©ãã«ãªã¯ã©ãŠãã«ä¿åããããããã§ãã çŸåšãæ·»ä»ãã¡ã€ã«ã¯äœæããããããžã§ã¯ãã§ã®ã¿äœ¿çšã§ããå¥ã®ãããžã§ã¯ãã§äœ¿çšããããšã¯ã§ããŸããã
æ·»ä»ãã¡ã€ã«ãäœæãããšãã次ã®2ã€ã®ãã£ãŒã«ãã«å ¥åããå¿ èŠããããŸãã
- namespacedTypeã¯ã åå空éèå¥åãã¹ã©ãã·ã¥ãããã³ããŒã¿åã§æ§æãããæååã§ãã
NpirmerïŒsurreptitioussurreptitious-banjo-145/string
- data - namespacedTypeãã£ãŒã«ãã§å®çŸ©ãããããŒã¿åã®base64è¡šçŸã äŸïŒ
aGVsbG8gd29ybGQh
ãããžã§ã¯ãã«é¢é£ä»ããããŠããããŒã ã¹ããŒã¹ã¹ããŒã¹ã確èªããã«ã¯ãnamespaces.listãåŒã³åºã
namespaces.list
ã
æ·»ä»ãã¡ã€ã«ã®æ倧é·ã¯1024ãã€ãã§ãã ãã¹åãåºèã®å Žæã®IDãJSONãªã©ã®æ§é åããŒã¿ãå€éšããŒã¿ããŒã¹ãžã®ãªã³ã¯ãªã©ãã¢ããªã±ãŒã·ã§ã³ã«ãšã£ãŠéèŠãªä»»æã®
string
ã䜿çšã§ããŸãã
ç»åããããªãªã©ã®å€§ããªããŒã¿é ç®ãè¿ãããå Žåãã管çããŠããªããµãŒãããŒãã£ã®ããŒã¿ããŒã¹ã«ããŒã¿ãããå Žåã¯ãå€éšããŒã¿ããŒã¹ãžã®ãªã³ã¯ãæ§ããããšã匷ããå§ãããŸãã
æ©å¯ããŒã¿ãä¿åããã³è»¢éããããã«æ·»ä»ãã¡ã€ã«ã䜿çšããããšã¯åŒ·ããå§ãããŸããã
ãã®äŸã¯ãããŒã³ã³ã«ããŒã¿ïŒè¡** aGVsbG8gd29ybGQh **ïŒãæ·»ä»ããæ¹æ³ã瀺ããŠããŸãã
HTTPã¡ãœããïŒ
ãªã¯ãšã¹ãURLïŒ
ãªã¯ãšã¹ãæ¬æïŒ
å¿çïŒ
ãã¹ãŠãããŸããã£ãå Žåãçãã¯ã¹ããŒã¿ã¹ã³ãŒã
ãŸãã
å¿çæ¬æã«ã¯ãå€
ãå«ãæ·»ä»ãã¡ã€ã«ã®JSONè¡šçŸãå«ãŸããŸããããã¯ãæ·»ä»ãã¡ã€ã«ã管çããããã®åç §ãšããŠäœ¿çšã§ããŸãã
POST
ãªã¯ãšã¹ãURLïŒ
https://proximitybeacon.googleapis.com/v1beta1/beacons/beaconName/attachments
ãªã¯ãšã¹ãæ¬æïŒ
{ "namespacedType":"surreptitious-banjo-145/my-attachment-type", "data":"aGVsbG8gd29ybGQh" }
å¿çïŒ
ãã¹ãŠãããŸããã£ãå Žåãçãã¯ã¹ããŒã¿ã¹ã³ãŒã
200
ãŸãã
å¿çæ¬æã«ã¯ãå€
BeaconAttachment.attachment_name
ãå«ãæ·»ä»ãã¡ã€ã«ã®JSONè¡šçŸãå«ãŸããŸããããã¯ãæ·»ä»ãã¡ã€ã«ã管çããããã®åç §ãšããŠäœ¿çšã§ããŸãã
ã¢ãã¿ãªã³ã°
ããŒã³ã³ãé©åã«æ©èœããŠããããšã確èªããããã«ããŒã³ã³ãå±éããããç£èŠããå¿ èŠããããŸãã Eddystone-TLMãã¬ãŒã ã«ãããããŒã³ã³ã¯ããããæ€åºããããã€ã¹ã«ã¹ããŒã¿ã¹ãå ±åã§ããŸãããããŒã³ã³ãå€ããããããå±éãããé åãååã«å€§ããå Žåãç¹å¥ãªç£èŠã¢ããªã±ãŒã·ã§ã³ã§ããŒã³ã³ãåå¥ã«ãã€ãã¹ããããšãåé¡ã«ãªãå¯èœæ§ããããŸãã ç¶æ³ããæãåºãæ¹æ³ããããŸãã Googleã®ããŒã³ã³ãã©ãããã©ãŒã ãä»ããŠéä¿¡ãããEddystone-TLMãã¬ãŒã ãå®æçã«ãŠãŒã¶ãŒã®æã«æž¡ãããšãã§ããŸãã ç£èŠãã¬ãŒã ãšãŠãŒã¶ãŒããã€ã¹çšã«ç¹å¥ã«èšèšããããã¬ãŒã ïŒ Eddystone-UIDãªã© ïŒã®äº€äºã¯ãããŒã³ã³ã®åæåäžã«èšå®ãããåãæéééã§çºçããŸãã
ããŒã³ã³ãé »ç¹ã«äœ¿çšãããªãå Žæã«ã€ã³ã¹ããŒã«ãããŠããå ŽåããŠãŒã¶ãŒããã®ãããªãã¬ãŒã ãåä¿¡ããå¯èœæ§ãæ倧åããããã«ã Eddystone-TLMãã¬ãŒã ãã¿ãŒã²ãããšé »ç¹ã«åãæ¿ããããšãæšå¥šãããŸãã
次ã®ããŒã¿ãEddystone-TLMãã¬ãŒã ã§éä¿¡ãããŸãã
- ããããªãŒæ®é
- éä¿¡ããããã¬ãŒã ã®æ°
- ã¢ã¯ãã£ããŒã·ã§ã³ããã®æé
- ããªãã®æž©åºŠ
ãã®ããŒã¿ã«åºã¥ããŠã Googleã®ããŒã³ã³ãã©ãããã©ãŒã ã¯æ¬¡ã®æ å ±ãæäŸã§ããŸãã
- æšå®ããããªãŒæç¶æé
- ããŒã³ã³ã®ç§»åïŒå é床èšãããå ŽåïŒ
- ç°åžžã«äœãæ€åºç
beacons.diagnostics
ãªãœãŒã¹ã䜿çšããŠãããŒã³ã³ã®ã¹ããŒã¿ã¹ã远跡ã§ããŸãã
次ã®éšåã§...
Google Neighborhood Messages APIã䜿çšããŠãã¯ã©ã€ã¢ã³ãåŽïŒAndroidããã³iOSïŒã§ããŒã³ã³ãšå¯Ÿè©±ããæ©èœãè¿œå ããæ¹æ³ã説æããŸã ã
GitHub㧠Proximity Beacon APIã䜿çšããAndroidããã³iOSçšã®ãµã³ãã«ãµãŒãã¹ã¢ããªã±ãŒã·ã§ã³