我正在跨平台应用(Android和iOS)上与团队合作。
此应用旨在使用beacons
和/或mesh networking
或multipeer-connectivity
的概念。目前,我们的团队正在使用Xamarin作为创建单一代码库的IDE。
经过重大研究(显然不够重要),我只能找到以下资源..
http://altbeacon.github.io/android-beacon-library
https://github.com/octoblu/meshblu
https://github.com/octoblu/MeshbluKit-iOS
https://github.com/octoblu/MeshbluKit-Android
https://github.com/CharruaLab/AltBeacon
https://blog.xamarin.com/play-find-the-monkey-with-ios-7-ibeacons/
有几个问题:
AltBeacon是否允许平台之间的通信?
是否有内置的方法在Xamarin / C#中建立Multipeer / Mesh网络?
Estimote是否需要使用贴纸/ estimote信标,或者智能手机是否可以作为灯塔使用?
我在寻找什么:
当用户没有WiFi或“数据”连接时,在iOS和Android设备之间建立连接的方法。
基本上每个设备都会充当彼此的“灯塔”。
Xamarin / C#是必须的(如果他们有说服力,我会听到其他解决方案)
此方案:
两个人走过彼此。两者都在他们的手机上运行应用程序。一个人有一个iPhone,另一个人有一个机器人。他们的应用程序在后台运行(他们的手机放在口袋或手中并被锁定..意思不是“使用”)。当个人走过彼此时,他们的手机互相检测并发送/接收彼此的文本
在此活动开始之前,用户1 使用此应用程序保存包含以下信息的备注...
“喷泉工作正常”
用户2 使用其设备上的应用程序保存包含以下信息的备注...
“扶手轻微受损”
用户相互通过后,下次他们打开他们的应用时,他们会看到一个更新的笔记阅读......
“喷泉工作正常
扶手轻微损坏“
可能的解决方案: TBD
拒绝解决方案:待定
-
目前的结论: 目前存在的应用程序,如FireChat,ViewRanger(我相信)或Xamarin示例“Find the Monkey”。 Apple在他们的商店使用iBeacons,其他人使用AltBeacon用于Android设备。我已经得出结论,这肯定是可能的,但我正在寻找如何最好地执行它,同时让两个平台充当彼此的信标。
答案 0 :(得分:4)
根据您的方案的描述,可以将其分解为两个简单的步骤:
必需:这应该适用于x-platform iOS和Android
我认为解决这个问题的最佳方法是使用BLE,这两个平台都支持BLE(有些比其他平台更好)。
在iOS上,设备可以同时充当BLE中心和BLE外设,在Android上情况更复杂,因为并非所有设备都支持BLE外设状态。 Android BLE堆栈也非常不稳定。
如果您的用例是功能驱动的,我建议您查看可以为您实现此功能的Frameworks和Libraries,而无需您从头开始构建它。
例如: http://www.p2pkit.io,http://www.intromi.co和http://www.underdark.io或谷歌附近
关于在Xamarin中使用本机代码,您可以简单地创建一个桥(绑定:https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/)。
免责声明:我为Uepaa工作,为Android和iOS开发p2pkit.io。
答案 1 :(得分:2)
“我在找什么: 当用户没有WiFi或“数据”连接时,在iOS和Android设备之间建立连接的方法。 基本上每个设备将充当彼此的“信标”。 Xamarin / C#是必须的(虽然如果他们有说服力,我会听到其他解决方案)“
BLE(蓝牙低功耗)正是您在寻找的,而不仅仅是iBeacon的一部分。
iBeacon建立在BLE堆栈之上,通过设置BLE广告包的“制造商特定数据”(Apple所做的)。 iBeacon在BLE“广播”模式下工作,它只传输三个数据字段UUID,主要(16位),次要(16位)。另外还有RSSI(传输/计算信号强度)。
糟糕的是,如果您使用iOS核心位置或任何其他iBeacon库,它将与UUID,主要,次要,RSSI一起使用。 您无法通过标准iBeacon协议传输任何其他数据。
请记住,BLE是低功耗和低速通信,您可以期望(从我在许多不同平台上的测试)每25-30ms最多20个字节
希望这会有所帮助......