Shiny.NET
Ranging

Ranging is a foreground only operation. You can scan for "all" beacons with a particular filter set. Meaning if you only filter by UUID, all beacons under that UUID will be returned. With ranging, all of the identifier values are provided. You are

|Area|Info| |---|---| |Description|| |Service|Shiny.Beacons.IBeaconRangingManager |NuGet|| |Static Generated Class|ShinyBeaconRangingManager

using Microsoft.Extensions.DependencyInjection;
using Shiny;

namespace YourNamespace
{
    public class YourShinyStartup : ShinyStartup
    {
        public override void ConfigureServices(IServiceCollection services, IPlatform platform)
        { 
            
<p>services.UseBeaconRanging 
        }
    }
}

Minimum Version: 8.0

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8" ?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" android:versionCode="1" android:versionName="1.0" package="com.org.yourapp" android:installLocation="preferExternal">
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.BLUETOOTH_PRIVILEGED" />
    <uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
    <uses-permission android:name="android.permission.BLUETOOTH" />
</manifest>

Minimum Version: 10

Info.plist

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE plist PUBLIC " -//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>NSLocationWhenInUseUsageDescription</key>
    <string>Say something useful here that your users will understand</string>
</dict>
</plist>
using Microsoft.Extensions.DependencyInjection;
using Shiny;

namespace YourNamespace
{
    public class YourShinyStartup : ShinyStartup
    {
        public override void ConfigureServices(IServiceCollection services, IPlatform platform)
        { 
            
services.UseBeaconRanging();
 
        }
    }
}
using System;
using Shiny;
using Shiny.Beacons;

public class BeaconRanging
{
    public void MyMethod()
    {
        // note, major & minor are optional here, but if you supply minor, you must supply major
        var ranging = ShinyHost.Resolve<IBeaconRangingManager>();
        ranging
            .WhenBeaconRanged(new BeaconRegion(
                "YourId",
                Guid.Parse(""),
                1, // major
                1 // minor
            ))
            .Subscribe(beacon =>
            {
                // you will get the full details of the beacon seen heree
            });
    }
}