NFL brings iOS-compatible beacon tech to New York for Super Bowl

2»

Comments

  • Reply 21 of 32
    gatorguygatorguy Posts: 24,382member
    For those of you suggesting that iBeacons are going to be used to violate your privacy, track you etc.…

    Why send a boy to do a man's job

    I'm not suggesting iBeacons will track you. In and of themselves they can't so I personally have zero concerns about Apple's involvement. But they will be the backbone for a multitude of 3rd party applications that will track you. Potentially worse, and unlike Google or iAd, their data collection and usage may not be solely for semi-anonymous targeted ads from that vendor. Disagree?
  • Reply 22 of 32
    Enjoy the game people, put the phone down, and watch the game.
  • Reply 23 of 32
    mstonemstone Posts: 11,510member
    Quote:
    Originally Posted by Dick Applebaum View Post

    <
    It is far more likely that your iDevice is using WiFi or Cell to access the Internet while shopping -- those actions can be detected and you can be located and tracked. But that can happen now -- and has no correlation to whether iBeacons are deployed or not!

     

    Indeed this is the issue about security. Since each app is controlling how to process the detection of an iBeacon it is possible that when Internet access is available or in the case that it is not, a log file can be written for later upload, but either way, the app developers can cetainly gleen information about each registered user of the app.

    I'm not that familiar with the requirements but perhaps you can tell me if an app is required to ask permission to use your location based on iBeacon just like when it asks for your permission for GPS and wifi location detection?
  • Reply 24 of 32
    mstone wrote: »
    <div class="quote-container" data-huddler-embed="/t/161857/nfl-brings-ios-compatible-beacon-tech-to-new-york-for-super-bowl#post_2466462" data-huddler-embed-placeholder="false"><span>Quote:</span><div class="quote-block">Originally Posted by <strong>Dick Applebaum</strong> <a href="/t/161857/nfl-brings-ios-compatible-beacon-tech-to-new-york-for-super-bowl#post_2466462"><img src="/img/forum/go_quote.gif" class="inlineimg" alt="View Post"/></a><br/><br/><
    It is far more likely that your iDevice is using WiFi or Cell to access the Internet while shopping -- those actions can be detected and you can be located and tracked. But that can happen now -- and has no correlation to whether iBeacons are deployed or not!</div></div><p> </p>

    Indeed this is the issue about security. Since each app is controlling how to process the detection of an iBeacon it is possible that when Internet access is available or in the case that it is not, a log file can be written for later upload, but either way, the app developers can cetainly gleen information about each registered user of the app.

    I'm not that familiar with the requirements but perhaps you can tell me if an app is required to ask permission to use your location based on iBeacon just like when it asks for your permission for GPS and wifi location detection?

    Yes!
    Overview

    The CLLocationManager class defines the interface for configuring the delivery of location- and heading-related events to your application. You use an instance of this class to establish the parameters that determine when location and heading events should be delivered and to start and stop the actual delivery of those events. You can also use a location manager object to retrieve the most recent location and heading data.

    A location manager object provides support for the following location-related activities:
    • Tracking large or small changes in the user’s current location with a configurable degree of accuracy.
    • Reporting heading changes from the onboard compass. (iOS only)
    • Monitoring distinct regions of interest and generating location events when the user enters or leaves those regions.
    • Deferring the delivery of location updates while the app is in the background. (iOS 6 and later only)
    • Reporting the range to nearby beacons.

    Some location services require the presence of specific hardware on the given device. For example, heading information is available only for devices that contain a hardware compass. This class defines several methods that you can use to determine which services are currently available.

    Important: In addition to hardware not being available, the user has the option of denying an application’s access to location service data. During its initial uses by an application, the Core Location framework prompts the user to confirm that using the location service is acceptable. If the user denies the request, the CLLocationManager object reports an appropriate error to its delegate during future requests. You can also check the application’s explicit authorization status using the authorizationStatus method.


    https://developer.apple.com/library/ios/documentation/CoreLocation/Reference/CLLocationManager_Class/CLLocationManager/CLLocationManager.html#//apple_ref/doc/uid/TP40007125-CH3-SW8
  • Reply 25 of 32
    I'm as paranoid as anyone, and I've used a Wifi sniffer before; you'd be amazed how much identifying data is exchanged over an "anonymous" protocol.

    That being said, [B]someone[/B] please write an app for Home Despot and Whale Foods Market that will let me search for products I want to buy, then direct me to the aisle and shelf that they are located on.

    I am so tired of useless retail apps that don't let me search for products available [B]in the store I am currently visiting[/B] and can't tell me [B]exactly where they are located[/B].

    Also, once this works, trrorsts will use it to locate you on aisle six for a "cleanup". :-p
  • Reply 26 of 32
    droidftwdroidftw Posts: 1,009member

     

    So now you're saying that you can be tracked with iBeacons if the user doesn't opt-out?  If not, why would someone need to opt-out of location tracking if iBeacons can't track you in the first place due to their "one directional" nature?

  • Reply 27 of 32
    droidftw wrote: »

    So now you're saying that you can be tracked with iBeacons if the user doesn't opt-out?  If not, why would someone need to opt-out of location tracking if iBeacons can't track you in the first place due to their "one directional" nature?


    My answer is "Yes" to the question: "...tell me if an app is required to ask permission to use your location based on iBeacon just like when it asks for your permission for GPS and wifi location detection?".


    Your assumption that "So now you're saying that you can be tracked with iBeacons if the user doesn't opt-out?" is false... I am not saying that -- rather you are making an assumption!


    I don't understand if some of you are in denial -- or if you are being deliberately obtuse.


    Let's define some things:

    Tracking: detecting where you are at any given time and recording your movement


    When Location Services uses GPS/AWiFi to determine your location, it receives latitude and longitude coordinates of where you are -- as you move these can be updated at specified intervals (less frequent == less battery usage). Here, the hard work (figuring your location longitude and latitude) is done on remote servers by normalizing and triangulating the signals of 3 or more GPS Satellites/AWiFi Tower data. Your iPhone App receives a long/lat point and a circle with a radius indicating accuracy.

    When Location Services uses iBeacons to determine your proximity, it receives iBeaconID (proximityUUID, Major, Minor);   Proximity (Immediate, Near, Far, Unavailable);  RSSI (Radio Signal Strength).  That's It -- it doesn't receive any longitude or latitude -- just the proximity of one or more iBeacons.


    Certainly the iPhone App could pre-store where the iBeacons are (their longitude and latitude) -- but that isn't furnished by the iBeacon.


    Now let's consider the practicality of doing tracking:

    If you look at the WiFiSLAM video I posted earlier, you will learn that there are a lot of WiFi and other signals floating around a given inside area. There is a lot of noise, interference, variation in signal-strength... WiFiSLAM uses frequent (many times a second) signals and normalizes them to avoid wide variations. Then, extensive calculations and stochastic analysis are used to determine the probability of where you are -- this is some heavyweight computing -- not practical on an iPhone.

    When an iPhone app uses iBeacons, there is a similar amount of noise, interference and variance in signal-strength. But, an iBeacon, likely, won't broadcast its ID and proximity more than once per second -- or it would exhaust its battery. Practically, it would take an iPhone app 5-10 seconds (or more) to normalize the signals to determine how far you are from a particular iBeacon -- within an accuracy of, say, 10-20 feet. Then it would need to do the same for 2 additional iBeacons so it could trilaterate where you are (specific area) within the store... IDK, maybe this would be accurate to a 50-100 foot radius. So, the iPhone App would know where you were (how far away from 3 iBeacons) 10 seconds ago, within a radius of 100 feet (at worst case) if my estimates are correct.

    So what does the iPhone App do? log the inexact data, call home with it... Then, to [keep] track where you are, likely, the iPhone app would need to start a new set of calculations every second -- to overlap the calculations already in progress... That would really drain the iPhone battery.


    So, while it may be theoretically possible to track you with an iBeacon -- it really isn't practical!



    Here's an explanation of Trilateration:

    http://en.wikipedia.org/wiki/Trilateration


    Here's a C program that does Trilateration:
    Example C program[edit]

    This is an enhanced version of the example program I submitted earlier. It is a lightly-tested implementation of the trilateration algorithm.
    The program reads the coordinates and the radius for each sphere from standard input, then calculates the intersection point, if any.
    This version handles correctly the situation where the three spheres are colinear. For example,
    {\bar p}_1 = (0, \ 0, \ 0), \ r_1 = 1
    {\bar p}_2 = (3, \ 0, \ 0), \ r_2 = 2
    {\bar p}_3 = (9, \ 0, \ 0), \ r_3 = 8
    which intersect at (1, \ 0, \ 0).
    (I tested the function with six billion intersecting but otherwise random spheres, and maxzero = 0.000000000001 \ min(r_1, r_2, r_3). All solutions were found, no false negatives were reported. The maximum relative error in the distances (compared to radii) in the solutions was less than 0.0000000001. The tests did not include any non-intersecting sphere configurations. Nominal animal (talk) 16:09, 19 June 2010 (UTC))
    #include <stdio.h>
    #include <math.h>

    /* No rights reserved (CC0, see http://wiki.creativecommons.org/CC0_FAQ).
    * The author has waived all copyright and related or neighboring rights
    * to this program, to the fullest extent possible under law.
    */

    /* Largest nonnegative number still considered zero */
    #define MAXZERO 0.0

    typedef struct vec3d vec3d;
    struct vec3d {
    double x;
    double y;
    double z;
    };

    /* Return the difference of two vectors, (vector1 - vector2). */
    vec3d vdiff(const vec3d vector1, const vec3d vector2)
    {
    vec3d v;
    v.x = vector1.x - vector2.x;
    v.y = vector1.y - vector2.y;
    v.z = vector1.z - vector2.z;
    return v;
    }

    /* Return the sum of two vectors. */
    vec3d vsum(const vec3d vector1, const vec3d vector2)
    {
    vec3d v;
    v.x = vector1.x + vector2.x;
    v.y = vector1.y + vector2.y;
    v.z = vector1.z + vector2.z;
    return v;
    }

    /* Multiply vector by a number. */
    vec3d vmul(const vec3d vector, const double n)
    {
    vec3d v;
    v.x = vector.x * n;
    v.y = vector.y * n;
    v.z = vector.z * n;
    return v;
    }

    /* Divide vector by a number. */
    vec3d vdiv(const vec3d vector, const double n)
    {
    vec3d v;
    v.x = vector.x / n;
    v.y = vector.y / n;
    v.z = vector.z / n;
    return v;
    }

    /* Return the Euclidean norm. */
    double vnorm(const vec3d vector)
    {
    return sqrt(vector.x * vector.x + vector.y * vector.y + vector.z * vector.z);
    }

    /* Return the dot product of two vectors. */
    double dot(const vec3d vector1, const vec3d vector2)
    {
    return vector1.x * vector2.x + vector1.y * vector2.y + vector1.z * vector2.z;
    }

    /* Replace vector with its cross product with another vector. */
    vec3d cross(const vec3d vector1, const vec3d vector2)
    {
    vec3d v;
    v.x = vector1.y * vector2.z - vector1.z * vector2.y;
    v.y = vector1.z * vector2.x - vector1.x * vector2.z;
    v.z = vector1.x * vector2.y - vector1.y * vector2.x;
    return v;
    }

    /* Return zero if successful, negative error otherwise.
    * The last parameter is the largest nonnegative number considered zero;
    * it is somewhat analoguous to machine epsilon (but inclusive).
    */
    int trilateration(vec3d *const result1, vec3d *const result2,
    const vec3d p1, const double r1,
    const vec3d p2, const double r2,
    const vec3d p3, const double r3,
    const double maxzero)
    {
    vec3d ex, ey, ez, t1, t2;
    double h, i, j, x, y, z, t;

    /* h = |p2 - p1|, ex = (p2 - p1) / |p2 - p1| */
    ex = vdiff(p2, p1);
    h = vnorm(ex);
    if (h <= maxzero) {
    /* p1 and p2 are concentric. */
    return -1;
    }
    ex = vdiv(ex, h);

    /* t1 = p3 - p1, t2 = ex (ex . (p3 - p1)) */
    t1 = vdiff(p3, p1);
    i = dot(ex, t1);
    t2 = vmul(ex, i);

    /* ey = (t1 - t2), t = |t1 - t2| */
    ey = vdiff(t1, t2);
    t = vnorm(ey);
    if (t > maxzero) {
    /* ey = (t1 - t2) / |t1 - t2| */
    ey = vdiv(ey, t);

    /* j = ey . (p3 - p1) */
    j = dot(ey, t1);
    } else
    j = 0.0;

    /* Note: t <= maxzero implies j = 0.0. */
    if (fabs(j) <= maxzero) {
    /* p1, p2 and p3 are colinear. */

    /* Is point p1 + (r1 along the axis) the intersection? */
    t2 = vsum(p1, vmul(ex, r1));
    if (fabs(vnorm(vdiff(p2, t2)) - r2) <= maxzero &&
    fabs(vnorm(vdiff(p3, t2)) - r3) <= maxzero) {
    /* Yes, t2 is the only intersection point. */
    if (result1)
    *result1 = t2;
    if (result2)
    *result2 = t2;
    return 0;
    }

    /* Is point p1 - (r1 along the axis) the intersection? */
    t2 = vsum(p1, vmul(ex, -r1));
    if (fabs(vnorm(vdiff(p2, t2)) - r2) <= maxzero &&
    fabs(vnorm(vdiff(p3, t2)) - r3) <= maxzero) {
    /* Yes, t2 is the only intersection point. */
    if (result1)
    *result1 = t2;
    if (result2)
    *result2 = t2;
    return 0;
    }

    return -2;
    }

    /* ez = ex x ey */
    ez = cross(ex, ey);

    x = (r1*r1 - r2*r2) / (2*h) + h / 2;
    y = (r1*r1 - r3*r3 + i*i) / (2*j) + j / 2 - x * i / j;
    z = r1*r1 - x*x - y*y;
    if (z < -maxzero) {
    /* The solution is invalid. */
    return -3;
    } else
    if (z > 0.0)
    z = sqrt(z);
    else
    z = 0.0;

    /* t2 = p1 + x ex + y ey */
    t2 = vsum(p1, vmul(ex, x));
    t2 = vsum(t2, vmul(ey, y));

    /* result1 = p1 + x ex + y ey + z ez */
    if (result1)
    *result1 = vsum(t2, vmul(ez, z));

    /* result1 = p1 + x ex + y ey - z ez */
    if (result2)
    *result2 = vsum(t2, vmul(ez, -z));

    return 0;
    }

    int main(void)
    {
    vec3d p1, p2, p3, o1, o2;
    double r1, r2, r3;
    int result;

    while (fscanf(stdin, "%lg %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg %lg",
    &p1.x, &p1.y, &p1.z, &r1,
    &p2.x, &p2.y, &p2.z, &r2,
    &p3.x, &p3.y, &p3.z, &r3) == 12) {
    printf("Sphere 1: %g %g %g, radius %g\n", p1.x, p1.y, p1.z, r1);
    printf("Sphere 2: %g %g %g, radius %g\n", p2.x, p2.y, p2.z, r2);
    printf("Sphere 3: %g %g %g, radius %g\n", p3.x, p3.y, p3.z, r3);
    result = trilateration(&o1, &o2, p1, r1, p2, r2, p3, r3, MAXZERO);
    if (result)
    printf("No solution (%d).\n", result);
    else {
    printf("Solution 1: %g %g %g\n", o1.x, o1.y, o1.z);
    printf(" Distance to sphere 1 is %g (radius %g)\n", vnorm(vdiff(o1, p1)), r1);
    printf(" Distance to sphere 2 is %g (radius %g)\n", vnorm(vdiff(o1, p2)), r2);
    printf(" Distance to sphere 3 is %g (radius %g)\n", vnorm(vdiff(o1, p3)), r3);
    printf("Solution 2: %g %g %g\n", o2.x, o2.y, o2.z);
    printf(" Distance to sphere 1 is %g (radius %g)\n", vnorm(vdiff(o2, p1)), r1);
    printf(" Distance to sphere 2 is %g (radius %g)\n", vnorm(vdiff(o2, p2)), r2);
    printf(" Distance to sphere 3 is %g (radius %g)\n", vnorm(vdiff(o2, p3)), r3);
    }
    }

    return 0;
    }

    http://en.wikipedia.org/wiki/Talk:Trilateration
  • Reply 28 of 32
    rob53rob53 Posts: 3,266member

    I welcome all this discussion on how iBeacon does and doesn't work, however, the NFL in their infinite (lack of) wisdom isn't installing iBeacon but something similar from Qualcomm. Yes, it's iOS-compatible because you have to download an app to allow iPhones to gain access.

     

    Real iBeacons cost $35 when purchased in a 10-pack and I bet they'd give you a break if you bought 1000. https://roximity.com/buy-now/

     

    Qualcomm's Gimbal Beacon is sold as-is with no warranty. Save a little in the short run and pay in the long run. https://manager.gimbal.com/beacon-warranty

  • Reply 29 of 32
    rob53 wrote: »
    I welcome all this discussion on how iBeacon does and doesn't work, however, the NFL in their infinite (lack of) wisdom isn't installing iBeacon but something similar from Qualcomm. Yes, it's iOS-compatible because you have to download an app to allow iPhones to gain access.

    Real iBeacons cost $35 when purchased in a 10-pack and I bet they'd give you a break if you bought 1000. https://roximity.com/buy-now/

    Qualcomm's Gimbal Beacon is sold as-is with no warranty. Save a little in the short run and pay in the long run. https://manager.gimbal.com/beacon-warranty

    You are correct... to a point!

    Apple hasn't really defined the specs of an iBeacon -- just the iBeacon protocol for using one in iOS. This is probably on purpose.

    I looked at the Gimbal specs and they are similar to other emerging hardware supporting iBeacons. I have hardware that support iBeacon Protocol from Estimote, StickNFind and TI.

    From what I've read, it isn't clear which Gimbal devices the NFL is going to use...

    But, according to the AI Article:
    "The power of this is it really is able to connect the real world, the brick-and-mortar world, with the virtual world with a level of granularity that hasn't existed before," Jha said. He added that the NFL will not connect personal and location data with the Super Bowl test, thereby protecting end-user privacy as the league figures out how to best leverage beacon tech.


    Looks like they don't know how to do it using iBeacons (and BLE) only... as some of us have been saying :D
  • Reply 30 of 32
    droidftwdroidftw Posts: 1,009member

    Clicking the thumbs up button just doens't feel like it's enough.  I'd like to thank Dick Applebaum for all the top shelf responses given in regards to iBeacons.  Truely informative and helpful stuff.

  • Reply 31 of 32
    Game time...

    See how many iBeacons you can locate...track!

    Enjoy!

    Go Borncos! Go Peyton!
  • Reply 32 of 32
    droidftw wrote: »
    Clicking the thumbs up button just doens't feel like it's enough.  I'd like to thank Dick Applebaum for all the top shelf responses given in regards to iBeacons.  Truely informative and helpful stuff.

    FWIW, I have been trying to figure out how to track a user with iBeacons since WWDC...

    It is beyond my pay grade...
Sign In or Register to comment.