using System;
|
using Shared.IOS.JLCountryCode;
|
using Foundation;
|
using System.Collections.Generic;
|
using Newtonsoft.Json.Linq;
|
using System.Net.Http;
|
using System.Threading.Tasks;
|
|
namespace JLCountrycode
|
{
|
public class CountryCodeView
|
{
|
/// <summary>
|
///
|
/// </summary>
|
private static CountryCodeView m_Current = null;
|
/// <summary>
|
///
|
/// </summary>
|
public static CountryCodeView Current
|
{
|
get
|
{
|
if (m_Current == null)
|
{
|
m_Current = new CountryCodeView();
|
}
|
return m_Current;
|
}
|
}
|
|
/// <summary>
|
/// 国家区号选择
|
/// </summary>
|
/// <param name="action"></param>
|
public void Show(Action<string, string> action)
|
{
|
JLCountryCodeController mJLCountryCodeController = new JLCountryCodeController();
|
|
mJLCountryCodeController.SelectCountryCodeBlock += (countryName, code) =>
|
{
|
action?.Invoke(countryName, code);
|
};
|
|
Shared.Application.currentVC.NavigationController.PushViewController(mJLCountryCodeController, true);
|
|
}
|
|
|
/// <summary>
|
/// 选择
|
/// </summary>
|
/// <param name="titleStr"></param>
|
/// <param name="dic"></param>
|
/// <param name="action"></param>
|
public void ShowSortSelection(string titleStr, Dictionary<string, List<string>> dic, Action<string> action)
|
{
|
try
|
{
|
JLSortSelectionViewController vc = new JLSortSelectionViewController();
|
vc.TitleStr = titleStr;
|
vc.SortedNameDict = ConvertToNativeDictionary(dic);
|
vc.SortSelectionBlock += (countryName) =>
|
{
|
action?.Invoke(countryName);
|
};
|
|
Shared.Application.currentVC.NavigationController.PushViewController(vc, true);
|
}
|
catch (Exception ex)
|
{
|
Console.WriteLine(ex.ToString());
|
}
|
|
}
|
|
/// <summary>
|
/// Dictionary 转 iOS原生 NSMutableDictionary
|
/// </summary>
|
/// <param name="dict"></param>
|
/// <returns></returns>
|
NSMutableDictionary ConvertToNativeDictionary(Dictionary<string, List<string>> dict)
|
{
|
NSMutableDictionary newDictionary = new NSMutableDictionary();
|
try
|
{
|
//var dictDataList = new NSMutableArray();
|
foreach (string key in dict.Keys)
|
{
|
var value = dict[key];
|
newDictionary.Add(new NSString(key), NSArray.FromObjects(value.ToArray()));
|
}
|
}
|
catch (Exception Ex)
|
{
|
Console.WriteLine(Ex.ToString());
|
}
|
return newDictionary;
|
}
|
|
/// <summary>
|
/// 根据手机当前的IP获取国家信息
|
/// </summary>
|
/// <returns></returns>
|
public async Task<string> GetCountryByIP()
|
{
|
string country = "Unknown";
|
|
try
|
{
|
using (HttpClient client = new HttpClient())
|
{
|
// 使用 ipinfo.io 获取位置信息
|
HttpResponseMessage response = await client.GetAsync("https://ipinfo.io/json");
|
|
if (response.IsSuccessStatusCode)
|
{
|
string json = await response.Content.ReadAsStringAsync();
|
JObject jsonObject = JObject.Parse(json);
|
|
// 从返回的 JSON 中提取国家信息
|
country = jsonObject["country"].ToString();
|
}
|
}
|
}
|
catch (Exception ex)
|
{
|
Console.WriteLine($"Error fetching IP info: {ex.Message}");
|
}
|
|
return country;
|
}
|
|
|
|
}
|
}
|