Maximum number of UUID / number of beacons in a single app?









up vote
0
down vote

favorite












I'd like to build an app that can communicate with an unlimited number of beacons. The idea is to have a single app that the user can user in anywhere in the world in partner stores. I understand that iOS has a limit of 20 regions for a single app and each region can register unlimited number of beacons.
Does the limit of 20 means the app can simultaneously deal with only 20 regions at a time or 20 is an absolute limit of UUID? In other words can I register thousands of UUID and based on the user location only 20 are active at a time?
Many thanks for your help.










share|improve this question

























    up vote
    0
    down vote

    favorite












    I'd like to build an app that can communicate with an unlimited number of beacons. The idea is to have a single app that the user can user in anywhere in the world in partner stores. I understand that iOS has a limit of 20 regions for a single app and each region can register unlimited number of beacons.
    Does the limit of 20 means the app can simultaneously deal with only 20 regions at a time or 20 is an absolute limit of UUID? In other words can I register thousands of UUID and based on the user location only 20 are active at a time?
    Many thanks for your help.










    share|improve this question























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      I'd like to build an app that can communicate with an unlimited number of beacons. The idea is to have a single app that the user can user in anywhere in the world in partner stores. I understand that iOS has a limit of 20 regions for a single app and each region can register unlimited number of beacons.
      Does the limit of 20 means the app can simultaneously deal with only 20 regions at a time or 20 is an absolute limit of UUID? In other words can I register thousands of UUID and based on the user location only 20 are active at a time?
      Many thanks for your help.










      share|improve this question













      I'd like to build an app that can communicate with an unlimited number of beacons. The idea is to have a single app that the user can user in anywhere in the world in partner stores. I understand that iOS has a limit of 20 regions for a single app and each region can register unlimited number of beacons.
      Does the limit of 20 means the app can simultaneously deal with only 20 regions at a time or 20 is an absolute limit of UUID? In other words can I register thousands of UUID and based on the user location only 20 are active at a time?
      Many thanks for your help.







      bluetooth-lowenergy ibeacon beacon






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked Nov 10 at 0:17









      THEO

      1




      1






















          1 Answer
          1






          active

          oldest

          votes

















          up vote
          1
          down vote













          On iOS, a maximum of 20 CLRegion instances can be registered for monitoring at one time. Each one of these must specify at least a ProximityUUID, but can leave the major and minor null, matching any of the billions of beacons with that same ProximityUUID. But there are also potentially many many billions of different Proximity UUIDs, so this certainly won't match all beacons.



          While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest. I actually built a web service called Ningo that lets you fetch a list of the known ProximityUUIDs that have been detected previously within a given distance of your location. There is also a free and open source iOS client library SDK for that here along with a full-blown reference app (free source code included) that does just exactly this so that you can detect almost any beacon around.



          One other simpler alternative is to simply use iOS Ranging APIs. Unlike monitoring APIs, there is no limit on how many CLRegion instances you can register for ranging, although practical limits mean that the system really slows down once you register more than about 100. The Ranging API, will let you detect any beacon if your app is already running, but unlike Monitoring API, it they won't let you wake up your app when a beacon appears. But again, since the phone will slow down to a crawl if you try to register many thousands of regions, this is not a practical way to detect any beacon.






          share|improve this answer




















          • Many thanks David for your answer. "While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest." Do you mean literally remove 20 regions? Let me illustrate my idea. Say I'm a mutinational like McDonalds and I want my clients to use a single Mcdo app wherever they go in the world and that can communicate with the thousands of the Mcdonald's restaurants installed beacons all other the world. Is that possible?
            – THEO
            Nov 10 at 22:40











          • Yes, exactly. On iOS you set up CLLocationManager to monitor for significant location changes. This gives you a callback each time the phone moves about 1km, even in the background. When the callback comes, you then stop monitoring for all regions, request a new list of 20 nearby UUUDs from the server based on your current lat/lon, and start monitoring those. The source code I shared does exactly that.
            – davidgyoung
            Nov 11 at 2:14










          • Many thanks David. Very clear.
            – THEO
            Nov 12 at 0:21










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53234893%2fmaximum-number-of-uuid-number-of-beacons-in-a-single-app%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown

























          1 Answer
          1






          active

          oldest

          votes








          1 Answer
          1






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          1
          down vote













          On iOS, a maximum of 20 CLRegion instances can be registered for monitoring at one time. Each one of these must specify at least a ProximityUUID, but can leave the major and minor null, matching any of the billions of beacons with that same ProximityUUID. But there are also potentially many many billions of different Proximity UUIDs, so this certainly won't match all beacons.



          While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest. I actually built a web service called Ningo that lets you fetch a list of the known ProximityUUIDs that have been detected previously within a given distance of your location. There is also a free and open source iOS client library SDK for that here along with a full-blown reference app (free source code included) that does just exactly this so that you can detect almost any beacon around.



          One other simpler alternative is to simply use iOS Ranging APIs. Unlike monitoring APIs, there is no limit on how many CLRegion instances you can register for ranging, although practical limits mean that the system really slows down once you register more than about 100. The Ranging API, will let you detect any beacon if your app is already running, but unlike Monitoring API, it they won't let you wake up your app when a beacon appears. But again, since the phone will slow down to a crawl if you try to register many thousands of regions, this is not a practical way to detect any beacon.






          share|improve this answer




















          • Many thanks David for your answer. "While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest." Do you mean literally remove 20 regions? Let me illustrate my idea. Say I'm a mutinational like McDonalds and I want my clients to use a single Mcdo app wherever they go in the world and that can communicate with the thousands of the Mcdonald's restaurants installed beacons all other the world. Is that possible?
            – THEO
            Nov 10 at 22:40











          • Yes, exactly. On iOS you set up CLLocationManager to monitor for significant location changes. This gives you a callback each time the phone moves about 1km, even in the background. When the callback comes, you then stop monitoring for all regions, request a new list of 20 nearby UUUDs from the server based on your current lat/lon, and start monitoring those. The source code I shared does exactly that.
            – davidgyoung
            Nov 11 at 2:14










          • Many thanks David. Very clear.
            – THEO
            Nov 12 at 0:21














          up vote
          1
          down vote













          On iOS, a maximum of 20 CLRegion instances can be registered for monitoring at one time. Each one of these must specify at least a ProximityUUID, but can leave the major and minor null, matching any of the billions of beacons with that same ProximityUUID. But there are also potentially many many billions of different Proximity UUIDs, so this certainly won't match all beacons.



          While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest. I actually built a web service called Ningo that lets you fetch a list of the known ProximityUUIDs that have been detected previously within a given distance of your location. There is also a free and open source iOS client library SDK for that here along with a full-blown reference app (free source code included) that does just exactly this so that you can detect almost any beacon around.



          One other simpler alternative is to simply use iOS Ranging APIs. Unlike monitoring APIs, there is no limit on how many CLRegion instances you can register for ranging, although practical limits mean that the system really slows down once you register more than about 100. The Ranging API, will let you detect any beacon if your app is already running, but unlike Monitoring API, it they won't let you wake up your app when a beacon appears. But again, since the phone will slow down to a crawl if you try to register many thousands of regions, this is not a practical way to detect any beacon.






          share|improve this answer




















          • Many thanks David for your answer. "While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest." Do you mean literally remove 20 regions? Let me illustrate my idea. Say I'm a mutinational like McDonalds and I want my clients to use a single Mcdo app wherever they go in the world and that can communicate with the thousands of the Mcdonald's restaurants installed beacons all other the world. Is that possible?
            – THEO
            Nov 10 at 22:40











          • Yes, exactly. On iOS you set up CLLocationManager to monitor for significant location changes. This gives you a callback each time the phone moves about 1km, even in the background. When the callback comes, you then stop monitoring for all regions, request a new list of 20 nearby UUUDs from the server based on your current lat/lon, and start monitoring those. The source code I shared does exactly that.
            – davidgyoung
            Nov 11 at 2:14










          • Many thanks David. Very clear.
            – THEO
            Nov 12 at 0:21












          up vote
          1
          down vote










          up vote
          1
          down vote









          On iOS, a maximum of 20 CLRegion instances can be registered for monitoring at one time. Each one of these must specify at least a ProximityUUID, but can leave the major and minor null, matching any of the billions of beacons with that same ProximityUUID. But there are also potentially many many billions of different Proximity UUIDs, so this certainly won't match all beacons.



          While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest. I actually built a web service called Ningo that lets you fetch a list of the known ProximityUUIDs that have been detected previously within a given distance of your location. There is also a free and open source iOS client library SDK for that here along with a full-blown reference app (free source code included) that does just exactly this so that you can detect almost any beacon around.



          One other simpler alternative is to simply use iOS Ranging APIs. Unlike monitoring APIs, there is no limit on how many CLRegion instances you can register for ranging, although practical limits mean that the system really slows down once you register more than about 100. The Ranging API, will let you detect any beacon if your app is already running, but unlike Monitoring API, it they won't let you wake up your app when a beacon appears. But again, since the phone will slow down to a crawl if you try to register many thousands of regions, this is not a practical way to detect any beacon.






          share|improve this answer












          On iOS, a maximum of 20 CLRegion instances can be registered for monitoring at one time. Each one of these must specify at least a ProximityUUID, but can leave the major and minor null, matching any of the billions of beacons with that same ProximityUUID. But there are also potentially many many billions of different Proximity UUIDs, so this certainly won't match all beacons.



          While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest. I actually built a web service called Ningo that lets you fetch a list of the known ProximityUUIDs that have been detected previously within a given distance of your location. There is also a free and open source iOS client library SDK for that here along with a full-blown reference app (free source code included) that does just exactly this so that you can detect almost any beacon around.



          One other simpler alternative is to simply use iOS Ranging APIs. Unlike monitoring APIs, there is no limit on how many CLRegion instances you can register for ranging, although practical limits mean that the system really slows down once you register more than about 100. The Ranging API, will let you detect any beacon if your app is already running, but unlike Monitoring API, it they won't let you wake up your app when a beacon appears. But again, since the phone will slow down to a crawl if you try to register many thousands of regions, this is not a practical way to detect any beacon.







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 10 at 2:34









          davidgyoung

          48k1075137




          48k1075137











          • Many thanks David for your answer. "While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest." Do you mean literally remove 20 regions? Let me illustrate my idea. Say I'm a mutinational like McDonalds and I want my clients to use a single Mcdo app wherever they go in the world and that can communicate with the thousands of the Mcdonald's restaurants installed beacons all other the world. Is that possible?
            – THEO
            Nov 10 at 22:40











          • Yes, exactly. On iOS you set up CLLocationManager to monitor for significant location changes. This gives you a callback each time the phone moves about 1km, even in the background. When the callback comes, you then stop monitoring for all regions, request a new list of 20 nearby UUUDs from the server based on your current lat/lon, and start monitoring those. The source code I shared does exactly that.
            – davidgyoung
            Nov 11 at 2:14










          • Many thanks David. Very clear.
            – THEO
            Nov 12 at 0:21
















          • Many thanks David for your answer. "While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest." Do you mean literally remove 20 regions? Let me illustrate my idea. Say I'm a mutinational like McDonalds and I want my clients to use a single Mcdo app wherever they go in the world and that can communicate with the thousands of the Mcdonald's restaurants installed beacons all other the world. Is that possible?
            – THEO
            Nov 10 at 22:40











          • Yes, exactly. On iOS you set up CLLocationManager to monitor for significant location changes. This gives you a callback each time the phone moves about 1km, even in the background. When the callback comes, you then stop monitoring for all regions, request a new list of 20 nearby UUUDs from the server based on your current lat/lon, and start monitoring those. The source code I shared does exactly that.
            – davidgyoung
            Nov 11 at 2:14










          • Many thanks David. Very clear.
            – THEO
            Nov 12 at 0:21















          Many thanks David for your answer. "While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest." Do you mean literally remove 20 regions? Let me illustrate my idea. Say I'm a mutinational like McDonalds and I want my clients to use a single Mcdo app wherever they go in the world and that can communicate with the thousands of the Mcdonald's restaurants installed beacons all other the world. Is that possible?
          – THEO
          Nov 10 at 22:40





          Many thanks David for your answer. "While you can't register more than 20 ProximityUUIDs for monitoring at any one time, you can change the ones registered as your location changes as you suggest." Do you mean literally remove 20 regions? Let me illustrate my idea. Say I'm a mutinational like McDonalds and I want my clients to use a single Mcdo app wherever they go in the world and that can communicate with the thousands of the Mcdonald's restaurants installed beacons all other the world. Is that possible?
          – THEO
          Nov 10 at 22:40













          Yes, exactly. On iOS you set up CLLocationManager to monitor for significant location changes. This gives you a callback each time the phone moves about 1km, even in the background. When the callback comes, you then stop monitoring for all regions, request a new list of 20 nearby UUUDs from the server based on your current lat/lon, and start monitoring those. The source code I shared does exactly that.
          – davidgyoung
          Nov 11 at 2:14




          Yes, exactly. On iOS you set up CLLocationManager to monitor for significant location changes. This gives you a callback each time the phone moves about 1km, even in the background. When the callback comes, you then stop monitoring for all regions, request a new list of 20 nearby UUUDs from the server based on your current lat/lon, and start monitoring those. The source code I shared does exactly that.
          – davidgyoung
          Nov 11 at 2:14












          Many thanks David. Very clear.
          – THEO
          Nov 12 at 0:21




          Many thanks David. Very clear.
          – THEO
          Nov 12 at 0:21

















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53234893%2fmaximum-number-of-uuid-number-of-beacons-in-a-single-app%23new-answer', 'question_page');

          );

          Post as a guest















          Required, but never shown





















































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown

































          Required, but never shown














          Required, but never shown












          Required, but never shown







          Required, but never shown







          Popular posts from this blog

          Use pre created SQLite database for Android project in kotlin

          Darth Vader #20

          Ondo