schollz / find

High-precision indoor positioning framework for most wifi-enabled devices.
https://www.internalpositioning.com/
GNU Affero General Public License v3.0
5.05k stars 368 forks source link

Smartwatch support #196

Open fotiDim opened 6 years ago

fotiDim commented 6 years ago

Are there any supported smartwatches? Android Wear would be a good candidate given that the required APIs are in place.

mnlgarbe commented 6 years ago

That should be really great. I've been thinking on it last days.

fotiDim commented 6 years ago

I have an Android Wear 2.0 watch now. I am willing to give a try implementing a proof of concept app given that I have some guidance on what exactly needs to be implemented. @schollz can you shed some light on this?

schollz commented 6 years ago

@fotiDim All you need to do is find a way to gather the WiFi information (mac addresses + signal strengths). Then just format that into JSON (see https://www.internalpositioning.com/api/#post-learn) and POST it to FIND! I'm here to help if you need, but I don't have a Smartwatch so I can't play with things myself.

fotiDim commented 6 years ago

@schollz I have 2 smartwatches that I can experiment on. I am more on iOS so far but I think I can handle this. I will give it a go over the next days.

tielur commented 6 years ago

@fotiDim I'm interested in this as well. I have an apple watch.

I've read that gathering the wifi data on iOS is either:

  1. Not possible anymore
  2. Possible with permission from Apple to use a specific API
  3. Possible but you need to use a private api

Have you made any progress?

Few notes:

jonathanweinberg commented 6 years ago

Seen #108?

tielur commented 6 years ago

Seen #108?

Yea it doesn’t look like anything good came out of it though. According to this article we shouldn’t be using NEHotspotHelper for this kind of use. Instead it recommends:

Location — If you’d like to use Wi-Fi data to determine the device’s location, we recommend you use Core Location. This locates the device using a wide variety of techniques, including Wi-Fi. For more information, see the Maps page on the developer web site

I haven't been able to find an API in Core Location that allows us to do this though. There was mention of a private api awhile ago that people were using to get this type of information. I'm not sure of the history of that private api though, if it was completely removed or if people just don't use it because they can't publish an app with it. If it's the latter I'd be completely fine with writing my own app and deploying it to my phone without going through the app store.

tielur commented 6 years ago

For reference that was the Apple80211 library.

tielur commented 6 years ago

Here's an app that allows you to scan wifi and get the information we need without a jail break. It's built by Apple though.

https://wlanbook.com/free-wifi-scanner-iphone-ipad-no-jailbreak-required/

fotiDim commented 6 years ago

@tielur it is still on my todo list. I had minimal time to spent so far but it is on my radar for the next days.

Regarding Apple watch I believe that App Store should not be a blocker. Since this is an "enthusiast" app, I expect users to be a bit more tech savvy and be able to use Xcode to deploy directly to an Apple watch. That does not require a developer account. Essentially if you have a mac you can do this easily enough. This permits use of private APIs since the app does not go through Apple's approval process.

OmgImAlexis commented 6 years ago

@fotiDim you don't even need xcode anymore. You can use cydia impactor to sideload even without a jailbroken device.

https://www.reddit.com/r/sideloaded/wiki/ipasigning#wiki_how_to_sideload_using_saurik.27s_.22impactor.22