从Android的移动网站(不是应用程序)共享WhatsApp上的链接


213

我已经开发了一个主要用于手机的网站。
我想允许用户直接从网页共享信息到WhatsApp。

使用UserAgent检测,我可以区分Android和iOS。
我发现,为了在iOS中实现上述功能,我可以使用URL:

href="whatsapp://send?text=http://www.example.com"

我仍在寻找OS为Android时要使用的解决方案(因为上述方法不起作用)。
我猜想这与在Android中使用“意图”有关,但是我不知道如何将其用作href的参数。


这种方式可以连接到Whatsapp应用程序,还有另一种方式可以连接到web.whatsapp.com选项。有什么方法可以检测您是否拥有该应用程序,以查看要连接的应用程序?
SrQ

哪个联系人会收到此消息?
Codebeat

Answers:


321

刚在网站上看到它,现在似乎也可以在具有最新chrome和whatsapp的最新Android上使用!给链接一个新的镜头!

<a href="whatsapp://send?text=The text to share!" data-action="share/whatsapp/share">Share via Whatsapp</a>

今天重新检查了一下(17 2015年4月)重新检查:
在iOS 8(iPhone 6,最新版本),Android 5(Nexus 5,最新版本)上对我有效。

它也可以在Windows Phone上使用。


1
确实,我的问题中的原始网址似乎现在也适用于Android。
2014年

谁支持@MosheL无疑具有深刻见解的评论,必须对他的“项目”确切地有深刻的了解。
Dan Dascalescu 2015年

6
@Manuel什么是data-action =“ share / whatsapp / share”?
user3362364

4
数据应采用url编码形式,否则它将在whatsapp iphone中发送空白消息。
Lijo Abraham 2015年

1
在最近的文档中可以找到一些API更改-faq.whatsapp.com/en/general/26000030/?category=5245251
abhishek77

101

上面的答案有点过时了。虽然这些方法有效,但是通过使用以下方法,您可以将任何文本共享为预定义的数字。以下方法适用于android,WhatsApp Web,IOS等

您只需要使用以下格式:

<a href="https://api.whatsapp.com/send?phone=whatsappphonenumber&text=urlencodedtext"></a>

更新-从现在开始使用(2018年11月)

<a href="https://wa.me/whatsappphonenumber/?text=urlencodedtext"></a>

使用:https : //wa.me/15551234567

不要使用:https : //wa.me/+001-(555)1234567

要创建带有将自动显示在聊天文本字段中的预填充消息的链接,请使用 https://wa.me/whatsappphonenumber/?text=urlencodedtext,其中whatsappphonenumber是国际格式和URL的完整电话号码-encodedtext是URL编码的预填充消息。

示例:https://wa.me/15551234567?text = I'm%20interested%20in%20your%20car%20for%20sale

要创建仅包含预填消息的链接,请使用 https://wa.me/?text=urlencodedtext

示例:https://wa.me/?text = I'm%20inquiring%20about%20the%20apartment%20listing

单击链接后,将显示您可以向其发送消息的联系人列表。

有关更多信息,请参阅https://www.whatsapp.com/faq/zh/general/26000030


我在所有设备上都对此进行了测试。它所做的只是打开whatsapp应用程序。没有任何事情发生。测试了多种设备(iOS,Android,Windows)。
HoldOffHunger

@HoldOffHunger是的,它将打开whatsapp应用程序,并且用户必须选择他希望与之共享链接/内容的联系人。
ad08

@ ad08:这就是Threema和我测试的其他40种服务的工作方式。Viber和WhatsApp却什么也不做,我联系了他们的开发人员,他们俩都承认API没有任何作用。我在这里跟踪了它们的对应关系和其他40个api(有效):github.com/bradvin/social-share-urls/blob/master/README.md
HoldOffHunger

在Mojave下的WhatsApp桌面上工作
Alchem

6
如果没有电话号码,wa.me链接无法在手机上正常工作。即使官方文档指出您可以使用它,也只会出现错误。使用WhatsApp网络,它确实可以在桌面上运行。api.whatsapp.com均可在两者上可靠运行。
里卡多BRGWeb

39

目前,实现此目标非常容易。您只需要在页面上添加以下代码:

<a href="whatsapp://send?text=<<HERE GOES THE URL ENCODED TEXT YOU WANT TO SHARE>>" data-action="share/whatsapp/share">Share via Whatsapp</a>

就是这样。不需要Javascript,也不需要其他。当然,您可以根据需要对其进行样式设置,并包含漂亮的Whatsapp图标。

我在装有Google Chrome的Android设备上对此进行了测试。版本:

  • Android 4.1.2(Jelly Bean)
  • Chrome移动版37.0.2062.117。也在Firefox Mobile 31.0上进行了测试。
  • Whatsapp V 2.11.399

它也适用于iOS。我已经在配备Safari的iPhone 5上进行了快速测试,它也可以正常运行。

希望这对某人有帮助。:-)


3
为了对您的内容进行编码以共享使用encodeURIComponent()
nikoskip 2014年

1
嘿,对我有用。谢谢:)很好奇,是否可以检查用户是否实际共享了链接还是只是回到了网站?
2014年

1
在装有Android 5.0(Lollipop)的Nexus 5和装有iOS 8.1.1的iPhone 5上也可以使用。
Narxx 2014年

2
@juangalf如果我想使用此方法共享图像怎么办?是否也可能,或者仅支持文本?
elembivos 2015年

1
@elembivos我也要问同样的问题。send参数必须如何格式化?目前,我whatsapp://send?text=data:image/png;base64,iVBORw0KGgoAAAANS...不确定要包含多少前缀...
TMOTTM

27

根据新文档,该链接现在为:

<a href="https://wa.me/?text=urlencodedtext">Share this</a>

如果不起作用,请尝试以下一种方法:

<a href="whatsapp://send?text=urlencodedtext">Share this</a>

3
因此,没有电话号码也是可能的。该文档可在以下位置找到:faq.whatsapp.com/en/general/26000030
Tim Vermaelen

1
我刚刚发现它无法正常工作了。它仅适用于电话号码。没有电话号码,您需要使用api.whatsapp.com
Ricardo BRGWeb

@RicardoBRGWeb可以确定吗?我只是在我的网络浏览器上尝试过,没有任何编号,对我有用,它使我可以使用Whatsapp Web界面并与联系人共享
Vincent Decaux

@VincentDecaux,即使在使用移动视图模式时,它也可以在桌面浏览器中使用。但是在移动浏览器中无法打开whatsapp或whatsapp商业应用程序。可能他们已经更改了应用程序中的内部链接uri。
里卡多BRGWeb

好的,您尝试过我的第二个选择吗?相当我没尝试过移动浏览器,明天我会尝试
Vincent Decaux

14

最近,WhatsApp在其官方网站上进行了更新,我们需要使用此HTML标签以使其可与移动网站共享:

<a href="whatsapp://send?text=Hello%20World!">Hello, world!</a>

您可以替换text=以拥有链接或任何文本内容


我亲自测试过。它会打开应用程序,但没有其他内容。
HoldOffHunger

@HoldOffHunger,因为您需要使用urlencode,否则它将无法正常工作
Shiv Singh

@Shiv:那不是我的问题。
HoldOffHunger

这肯定可以正常工作...是否可以在消息文本中插入换行符(输入键)?
cht

@cht还可以,但是您可以使用%0D作为换行符
Elro444 '19

11

最新更新

现在您可以使用whatsapp的最新API https://wa.me/,而无需担心用户代理,该API将做用户代理处理。

在相应的whatsapp客户端(Android / iOS / Webapp)中使用联系人选择选项共享预填充文本:

https://wa.me/?text=urlencodedtext

在各自的whatsapp客户端(Android / iOS / Webapp)中为特定的whatsapp用户打开“聊天对话框”:

https://wa.me/whatsappphonenumber

与特定用户共享预填充文本(在两个上方组合):

https://wa.me/whatsappphonenumber/?text=urlencodedtext

注意事项whatsappphonenumber应为国际格式的完整电话号码。以国际格式添加电话号码时,请省略任何零,方括号或破折号。

有关官方文档,请访问 https://faq.whatsapp.com/en/general/26000030



7

恐怕Android版WhatsApp目前不支持从Web浏览器调用。

我对当前的项目有相同的要求,并且由于找不到任何适当的信息,我最终下载了APK文件。

在Android中,如果要从网络浏览器调用应用程序,则需要定义一个带有android.intent.category.BROWSABLE类别的Activity。

您可以在此处找到有关此信息的更多信息:https : //developers.google.com/chrome/mobile/docs/intents

如果您查看WhatsApp AndroidManifest.xml文件,则类别为BROWSABLE的唯一Activiy就是:

<activity android:name="com.whatsapp.Conversation"   android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" android:windowSoftInputMode="stateUnchanged">
        <intent-filter>
            <action android:name="android.intent.action.SENDTO" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="sms" />
            <data android:scheme="smsto" />
        </intent-filter>
    </activity>

我已经玩了一段时间了,但无法使其正常工作。我得到的最多是从Chrome打开WhatsApp应用程序,但我想不出一种设置消息内容和收件人的方法。

由于WhatsApp团队没有对此进行记录,因此我认为这仍在进行中。看起来将来WhatsApp也将处理SMS。

获得更多信息的唯一方法是联系WhatsApp开发人员团队,这是我所尝试的,但是我仍在等待响应。

问候!


1
我可以要求您在此处分享有关此问题的任何新信息吗?我也很方便。无论如何,谢谢您详尽的回答。
ccalboni 2014年

我能够与WhatsApp开发人员联系。他们承认不支持此功能。
HoldOffHunger

7

通常,仅使用Java脚本仅在iOS或Android设备上显示Whatsapp链接才有意义:

   if (navigator.userAgent.match(/iPhone|Android/i)) {
      document.write('<a href="whatsapp://send?text=See..">Share on WhatApp</a>');
   }

什么没有奏效?链接显示在非移动设备上?在移动设备上的链接不起作用?
魏登林德'18

将打开WhatsApp应用程序。但是既不显示文本也不显示消息。在多个操作系统和设备上进行了测试。我给开发者发了电子邮件。他们正式不支持此行为。“很遗憾,目前尚不支持此行为。我们一直在努力改进我们的应用程序,并将考虑您的建议。” (票号172349248330585)我已经测试了约40种其他服务,仅WhatsApp和Viber不支持他们自己的文档。
HoldOffHunger

7

刚刚用,whatsapp://对我的超老测试了该方案,就像一个魅力。它似乎只是版本。以来Android 2.3.3Whats App 2.11.301Whats AppWhats App迫使所有人进行更新,因此使用它应该是安全的。

Whats App文档还提到了该方案:http : //www.whatsapp.com/faq/en/android/28000012

我现在正在生产站点上使用它,如果收到任何用户投诉,将在此处进行更新。

编辑(11月14日):几周后没有用户投诉。


6

官方文档说使用:wa.me。不要使用wa.me。亲自尝试一下:https : //wa.me/?text= SomeTexttoShare对我来说,结果是:

我们找不到您想要的页面

您似乎正在寻找一个不存在的页面。或者我们可能刚刚删除的页面。无论哪种方式,请返回或确保检查URL,您的拼写并重试。

如果要共享,则必须绝对使用以下两种URL格式之一:

https://api.whatsapp.com/send?text=YourShareTextHere
https://api.whatsapp.com/send?text=YourShareTextHere&phone=123

如果您有兴趣观看跟踪这些URL的项目,请查看我们!:https : //github.com/bradvin/social-share-urls#telegramme

社交分享网址


whatsapp://send?text=无论有没有URL编码,使用对我都有效。仅在iOS上进行过测试
-Snowball

嘿,@ Snowball:实际上,感谢您的评论,仅在安装whatsapp应用程序后才能使用。对于customProtocol://action=?链接类型,这是正常的。因此,在台式机上什么也做不了。要使用该功能,需要先检测操作系统,然后再为桌面使用一个URL,对于iOS使用另一个URL。但这与OP所要求的完全不同。
HoldOffHunger

3

根据平台(台式机或移动设备)切换whatsapp共享链接。

无论是否在链接中提供电话号码,此功能都可以使用。

对于手机

   vm.LinkTextToShare = 'https://api.whatsapp.com/send?text=' + encodeURIComponent(window.location.href) ;

   window.open(vm.LinkTextToShare,"_blank");

对于台式机

   vm.LinkTextToShare = 'https://web.whatsapp.com/send?l=en&text=' + encodeURIComponent(window.location.href) ;

   window.open(vm.LinkTextToShare,"_blank");

3

这段代码对我有用。

单击链接后,它将要求您选择共享消息的联系人。

<a href="https://api.whatsapp.com/send?text=enter message here">Click here to share on Whatsapp</a>

您可以添加target =“ _ blank”属性以在新窗口或选项卡中将其打开。

当有人要共享特定的消息或文章时,我认为不需要电话号码。


可以在浏览器桌面中打开它吗?如此转发到web.whatsapp页面?
gumuruh

1

像“ whatsapp:// send?text =“ + encodeURIComponent(您的文本在此处)一样使用它,它肯定会工作。


0

尝试以这种方式进行:

<a href="https://wa.me/(phone)?text=(text URL encoded)">Link</a>

即使您可以发送消息而无需在链接中输入电话号码:

<a href="https://wa.me/?text=Hello%20world!">Say hello</a>

单击链接后,将显示您可以向其发送消息的联系人列表。

有关更多信息,请访问https://faq.whatsapp.com/en/general/26000030

祝好运!


whatsapp说我们找不到您想要的页面
Reza Mortazavi

我不明白 WhatsApp显示该错误?什么时候?
Gustavo Cantero
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.