using System.Threading.Tasks;
namespace System.Application.Services.Implementation
{
///
public abstract class TelephonyServiceImpl : ITelephonyService
{
readonly IPermissions pf;
readonly IPermissions.IGetPhoneNumber p1;
public TelephonyServiceImpl(IPermissions pf, IPermissions.IGetPhoneNumber p1)
{
this.pf = pf;
this.p1 = p1;
}
///
/// 由特定平台实现的获取手机号码
///
///
protected abstract string? PlatformGetPhoneNumber();
///
/// 由特定平台实现的检查权限后获取手机号码
///
///
protected virtual async Task PlatformGetPhoneNumberAsync()
{
var status = await pf.CheckAndRequestAsync(p1);
if (status.IsOk())
{
return PlatformGetPhoneNumber();
}
return null;
}
public async Task GetPhoneNumberAsync()
{
var phoneNumber = await PlatformGetPhoneNumberAsync();
return phoneNumber;
}
}
}