我有TMA(Telegram迷你应用程序),在卖家详细信息块上有一个按钮,用户可以使用该按钮通过卖家号码拨打电话。
问题:当用户单击电话号码按钮呼叫卖家时,会自动打开电话应用程序,而无需输入电话号码。
我目前的IOS工作解决方案:
const handleCall = () => {
const phoneNumber = detailUserInfo.phone.trim().replace(/\D/g, '');
if (phoneNumber) window.open(`tel:+${phoneNumber}`);
else console.error('Invalid phone number');
};
<Button onClick={handleCall} size='large' variant='primary'>
Make a call
</Button>
不幸的是,这个解决方案不适用于Android(实际上它在没有输入电话号码的情况下打开电话应用程序)。
我已经尝试过这样的解决方案:
对电话号码进行编码(不适用于任何操作系统)
const handleCallDefault = () => {
const phoneNumber = detailUserInfo.phone.trim().replace(/\D/g, '');
if (phoneNumber) {
const formattedNumber = `+${phoneNumber}`;
const encodedNumber = encodeURIComponent(formattedNumber);
window.open(`tel:${encodedNumber}`, '_blank', '_system');
} else {
console.error('Invalid phone number');
}
};
对象window.location.hef
const handleCallUtilsWindowLocation = () => {
const phoneNumber = detailUserInfo.phone.trim().replace(/\D/g, '');
if (phoneNumber) {
const formattedNumber = `+${phoneNumber}`;
const encodedNumber = encodeURIComponent(formattedNumber);
window.location.href = `tel:${encodedNumber}`;
} else {
console.error('Invalid phone number');
}
};
Next.js 链接组件(适用于 IOS)
<Link href={`tel:+${detailUserInfo.phone}`} target='_blank'>
Make a call
</Link>
<a href={`tel:+${detailUserInfo.phone}`} target='_blank'>
Make a call
</Link>
任何此选项在 Telegram Web 视图中都无法正常工作,但在浏览器中可以正常工作。
预先感谢您的任何建议
这个问题已经在最新的 Telegram Mini App 更新中解决了。