Locate an iPhone reliably indoors?

2020-05-24 09:53发布

I'm writing an app for a museum tour. I'd like my app to know where the user is in the building, if the user is standing in a particular room, in front of a particular work, etc.

GPS doesn't work inside. (Using WiFi positioning could work, but I know Apple doesn't use Skyhook anymore, so I don't know where I would register my base stations.)

Since GPS won't work, it would seem like having a specialized device in a known location and having the app detect that device, could work. But based on my research, this doesn't look easy, either:

• There's no way to detect nearby WiFi base stations because Apple doesn't allow querying for base stations via public APIs.

• Finding a device via Bonjour only works if the devices are already on the same WiFi network. And the Guest's phone won't be on our WiFi network.

• GameKit...hmm...don't yet see an angle there.

Does anyone have ideas on how this could be implemented?

Thanks!

9条回答
等我变得足够好
2楼-- · 2020-05-24 10:09

I would probably stick some hundred QR-codes on the walls of the building.

查看更多
Explosion°爆炸
3楼-- · 2020-05-24 10:13

I suggest Bluetooth. I did some preliminary work on a similar problem, played around with some code for watching which bluetooth devices were visible to the phone while walking between rooms of my house.

You don't have to pinpoint precisely where the bluetooth devices actually are; if you can see device A and B but not C then you're in this area, if you can see all three then you're in this area, etc. With a little bit of "watching" the signal changes you can pinpoint their location more closely, e.g. I can see A but not B or C and 10 seconds later I can see A and B then odds are good that I'm towards the A-only side of the A+B area; when 10 seconds later I can see B+C but no longer A then odds are good I'm closer to the area where you cross from A+B to B+C, etc.

Though I didn't test it exhaustively, my results were sufficiently positive to advise my client that some more robust, real-worldish testing was worthwhile, that this would likely work just fine. There might be issues with signal bounce that might require some shielding or that kind of thing, but it does seem feasible.

查看更多
Juvenile、少年°
4楼-- · 2020-05-24 10:13

The only thing I can think of is bluetooth, but I'd think that would be nearly impossible to get right.

Most people have one or two RFID tags on them, if they allow it maybe you could have a handful of detectors rigged up. I know I carry 3 different ones (car keys, building passes) and maybe more.

查看更多
唯我独甜
5楼-- · 2020-05-24 10:13

I ran into this problem myself last summer during an internship, because of the research I was helping to conduct I know the only real solution that doesn't involve extra hardware or user involvement is to use the private API and avoid the app store.

This obviously only really works if you have complete control over the hardware being used on the tour (I.E. you provide the iPhone). If you do provide the iPhone then you can deploy the app to it manually. Obviously that isn't an ideal situation but it would work.

As others have mentioned the use of QR-codes is another solution to the problem but requires the user to actively look for the codes to get the information for the tour. For the individual exhibits this would work quite well but it has limitations especially if there isn't a convenient place to put them.

查看更多
Explosion°爆炸
6楼-- · 2020-05-24 10:16

How about barcodes (traditional or 2D)? These can be printed as part of the work description.

查看更多
一纸荒年 Trace。
7楼-- · 2020-05-24 10:19

Can you manufacture some small device for the task? ie making an IR receiver that can identify a IR emitted code and make a sound signal for the iPhone to interpret through the headphone mic plug.

Here is a pure mic but I think it could be made with an IR sensor instead. alt text

And...here is a product that does both sensing IR signals and emits IR. Redeye mini. Then you will need some sender devices for the rooms and perhaps near a particular work.

查看更多
登录 后发表回答