多点连通性:iOS和Android

7
我正在与一个团队一起开发跨平台应用程序(Android和iOS)。
这个应用程序旨在使用信标网状网络多点连接的概念。目前,我们的团队正在使用Xamarin作为我们创建单一代码库的IDE。
经过重大研究(显然不够充分),我只能找到以下资源...

http://altbeacon.org/

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信标,还是智能手机可以作为信标?

我要找的是:

  1. 一种在用户没有WiFi或“数据”连接的情况下,在iOS和Android设备之间建立连接的方式。

  2. 基本上每个设备都将作为彼此之间的“信标”。

  3. Xamarin/C#是必须的(虽然如果有说服力的其他解决方案,我会考虑)

  4. 这种情况:

两个人相互走过。两人都在他们的手机上运行应用程序。一个人有iPhone,另一个人有Android。他们的应用程序正在后台运行(他们的手机在口袋或手中,已锁定..意味着未处于“使用”状态)。当他们相互经过时,他们的手机会检测到彼此并互相发送/接收文本

在此事件发生之前,User 1 使用该应用程序保存了一个包含以下信息的便签...

"饮水机正常工作"

User 2 在其设备上使用该应用程序保存了一个包含以下信息的便签...

"扶手稍微有损坏"


用户互相通过后,下一次打开应用程序时,他们应该看到一个更新的单个便笺,上面写着...

"饮水机正常工作

扶手轻微受损"


可能的解决方案:待定

被拒绝的解决方案:待定

--

目前的结论: 目前存在一些应用程序,例如FireChat、ViewRanger(我相信),或Xamarin示例"Find the Monkey"。苹果在他们的商店中使用iBeacons,其他人使用AltBeacon用于Android设备。我得出的结论是这是完全可能的,但我正在寻找如何最好地执行它,同时让两个平台作为彼此的信标。


你得出了什么结论?你实际上写了一个概念验证应用程序吗? - t0mm13b
好问题,我已经更新了我的帖子。 - captainrad
在iOS上,设备无法在后台充当信标。此外,iBeacons等只会广告3个标识符,它们不会交换信息。您需要实现BLE外围设备和中心角色。在iOS上,可以通过Core Bluetooth来实现。我不使用Xamarin,但我在上面看到了一些关于核心蓝牙的问题,所以它是受支持的。我猜这对于Xamarin在安卓上也是如此,通过适当的安卓库,尽管我不知道C#代码的可移植性有多高。我怀疑您将需要为每个平台进行特定的实现。 - Paulw11
1
你想做的事情在Android和iOS上使用本地蓝牙库是完全可能的。然而,你需要进行大量平台特定的优化,使其足够快地工作以在用户靠近彼此时触发。我的看法是,期望用Xamarin进行这些优化并不现实,因为它不能给你足够精细的控制。 - davidgyoung
2个回答

4
从您的场景描述中,我们可以将其分解为两个简单的步骤:
  1. 发现附近设备
  2. 在发现后交换简单的数据
要求:这应该可适用于iOS和Android平台。
我认为最好的方法是使用BLE技术,因为它被两个平台支持(某些平台比其他平台更好)。
在iOS上,设备可以同时作为BLE中央设备和BLE外围设备。在Android上,情况比较复杂,因为并非所有设备都支持BLE外围状态。而且Android的BLE堆栈非常不稳定。
如果您的使用案例是驱动功能的话,我建议您看看可以为您实现此目的的框架和库,而无需从头开始构建。
例如:http://www.p2pkit.iohttp://www.intromi.cohttp://www.underdark.io,或者使用Google Nearby。
关于在Xamarin中使用本地代码,您可以简单地创建一个桥接(绑定:https://developer.xamarin.com/guides/ios/advanced_topics/binding_objective-c/)。
免责声明:我在Uepaa工作,开发Android和iOS的p2pkit.io。

太棒了!实际上在你发布这个之前我就开始使用underdark了。现在正在查看p2pkit.io和intromi.co。过几天我会将这个作为答案,因为它对我来说提供了最有用的信息。 - captainrad

2
我所需要的是: 在用户没有WiFi或“数据”连接时,建立iOS和Android设备之间的连接方式。 基本上每个设备都将作为彼此的“信标”。 Xamarin/C#是必须的(尽管如果它们令人信服,我会考虑其他解决方案)。
BLE(低功耗蓝牙)是您要寻找的内容,不仅仅是iBeacon的一部分。
iBeacon是建立在BLE堆栈之上的,通过设置BLE广告包的“制造商特定数据”(苹果已经完成)。 iBeacon以BLE“广播”模式工作,并且仅传输三个数据字段UUID、major(16位)、minor(16位)。另外RSSI(信号强度)也被传输/计算。
坏处是,如果您使用iOS核心位置或任何其他iBeacon库,它将使用UUID、major、minor、RSSI工作。您无法通过标准iBeacon协议传输任何其他数据。
你所需要的是iOS上的CoreBluetooth或者Android上的蓝牙低功耗库。
你可能需要使用GATT/ATT BLE层来创建自定义配置文件(因为现有的现有设备可能不符合您的需求)。
您需要在BLE配置文件上开发应用程序。
请记住,BLE是低功耗和低速通信,根据我的测试结果(在许多不同平台上),您可以期望每25-30毫秒传输20个字节。
希望这能帮到您...

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接