javascript Whatsapp点击使用表情符号聊天

tkclm6bt  于 2023-06-20  发布在  Java
关注(0)|答案(2)|浏览(124)

使用Whatsapp 'Click To Chat',我能够向一个号码发送消息,正如预期的那样。但是,我想在预填充的消息中发送一些表情符号。当我使用浏览器时,它工作得很好,但当我在应用程序中使用WebView时,它就不起作用了(特别是带有运行相同站点的WebView的React Native应用程序)。

问题

对于这两个,桌面浏览器或webView我使用相同的功能和相同的编码(encodeURI()),但当WebView调用Whatsapp URL(“wa.me/...”)时,Whatsapp上的聊天显示所有表情符号:��

  • 在WhatsApp Click to Chat上可以使用表情符号吗?(我敢打赌,因为桌面浏览器工作)。
  • 在移动的/APP上会发生什么?
  • 我应该使用某种字符编码,如unicode,UTF-8(我已经测试了一些,但没有成功)?

下面是我使用的函数:

SendWhatsapp = function(message, number) {
  number = LibGeral.NormalizeMobileNumber(number);
  if (empty(message)) {
    message = "";
  }

  var urlApiWhats = "https://wa.me/" + number + "?text=" + message;
  urlApiWhats = encodeURI(urlApiWhats);
  var a = document.createElement("a");
  a.setAttribute("data-action", "share/whatsapp/share")
  a.href = urlApiWhats;
  window.document.body.appendChild(a)
  a.click();
  window.document.body.removeChild(a);
  return true;
}

SendWhatsapp("I'm a message with emoji 😂", "xxxxxxxxx")

如前所述,在WebView from应用程序中,它调用WhatsApp URL并正确打开聊天,但表情符号丢失,只显示一个问号。在浏览器(例如Chrome)上,它工作得很好,表情符号出现(即使在移动的版Chrome上)此外,即使我删除encodeURI并直接传递表情符号,它仍然不起作用。我很确定几周前它还能用的...

3wabscal

3wabscal1#

这是你应该如何编码你的URL:

const url = `https://api.whatsapp.com/send?phone=31612345678&text=${encodeURIComponent('Cheers from Vissie ⚡️')};
// returns: "https://api.whatsapp.com/send?phone=31612345678&text=Cheers%20from%20Vissie%20%E2%9A%A1%EF%B8%8F"

你可以使用https://wa.me/,我只是在这个例子中使用了另一个URL。在浏览器中,它可能仍然给出。但在你的手机上应该能用。

vxf3dgd4

vxf3dgd42#

我来晚了一点,但我遇到了同样的问题。解决方案如下:
不要使用

var urlApiWhats = "https://wa.me/" + number + "?text=" + message;

用这个代替

var urlApiWhats = "https://api.whatsapp.com/send/?phone=" + number + "&text=" + message;

Vissie的答案是工作,因为他/她使用api.whatsapp.com/send/。浏览器仍然会显示,但一旦打开WhatsApp,您就会看到表情符号。但是短网址wa.me不起作用。WhatsApp的服务器会将所有wa.me请求重定向到api.whatsapp.com/send/,在此重定向过程中,表情符号会变成。这不是你的代码的问题。

相关问题