MAUI Essentials 获取移动运营商名称

MAUI Essentials Get Mobile Carrier Name

提问人:MobileDev 提问时间:11/16/2023 更新时间:11/17/2023 访问量:39

问:

我们目前正在使用 .NET 6 构建一个移动应用,并正在寻找一种方法来检测设备正在使用的移动运营商的名称。

这是否可以通过 MAUI Essentials 实现?

如果不是,是否可以使用本机 iOS 和 Android API?似乎在 iOS 16 中,Apple 对此信息的可用性进行了一些更改。

net-6.0 maui xamarin.essentials

评论


答:

0赞 Jessie Zhang -MSFT 11/17/2023 #1

可以参考以下步骤,在 Xamarin.Forms 上将平台代码作为依赖项服务调用。

步骤1:实现获取 Android 和 iOS 运营商信息的函数:

对于Android:

将以下代码添加到 .MainActivity

public static MainActivity Instance { get; private set; }  
   protected override void OnCreate(Bundle savedInstanceState)  
   {  
       base.OnCreate(savedInstanceState);  
       Instance = this;  
   }

创建帮助程序类以获取运营商信息。

public static class GetCarrierHelper  
   {  
       public static string GetCarrierName()  
       {  
           TelephonyManager manager = MainActivity.Instance.GetSystemService(Context.TelephonyService) as TelephonyManager;  
           String carrierName = manager.NetworkOperatorName;  
           return carrierName;  
       }  
   }

对于 iOS,您需要创建以下帮助程序类:

public static class GetCarrierHelper  
   {  
       public static string GetCarrierName()  
       {  
           using (var info = new CTTelephonyNetworkInfo())  
           {  
               CTCarrier cTCarrier = (CTCarrier)info.ServiceSubscriberCellularProviders.ValueForKey((NSString)info.DataServiceIdentifier);  
               // You could get the CTCarrier according to DataServiceIdentifier key, then return the CarrierName. CTCarrier and its CarrierName property was deprecated  
               return cTCarrier.CarrierName;  
           }  
       }  
   }

步骤2:调用平台代码:

private async void Button_Clicked(object sender, EventArgs e)  
   {  
   #if ANDROID  
           var name = MauiApp9.Platforms.Android.GetCarrierHelper.GetCarrierName();  
   #elif IOS  
       var name = MauiApp9.Platforms.iOS.GetCarrierHelper.GetCarrierName();  
   #endif  
   }

如需更多信息,您可以查看 调用平台代码

评论

0赞 MobileDev 11/17/2023
谢谢我可以尝试一下,我认为 iOS 上的问题可能是 CTCarrier 已被 Apple 弃用。
0赞 Jessie Zhang -MSFT 11/21/2023
为此,您可以检查 iOS 16 CTCarrier 弃用