最近接了个新需求, 就是需要从公司项目跳转到第三方通讯App的指定联系人的对话界面。大概就是跳转到第三方APP时用手机号码找到对应的联系人,然后自动到达这个联系人的对话界面进行沟通。
关于第三方App公司给了2个选择, 一个是微信, 一个是WhatsApp,任选其一。
话说微信SDK经常接触,WhatsApp倒是没咋弄过,于是就决定先从微信入手。
看了微信的开发文档,符合这个需求的只有分享功能,但是文档提供的分享场景只有这三个:
分享到对话: WXSceneSession
分享到朋友圈: WXSceneTimeline
分享到收藏: WXSceneFavorite
并不支持分享给指定的联系人,我用第一种场景分享到对话做了测试,必须要自己手动选中联系人才能跳转到对话界面,那这个就不符合需求了,所以微信Pass。
再来看看WhatsApp, WhatsApp的官方文档非常简洁,而且不需要集成SDK,非常方便。幸运的是它对跳到到指定联系人界面对话有提供Custom URL Scheme,就是点击对话功能。
官方文档:
WhatsApp 的 点击直接对话功能让用户无需将另一方的电话号码储存到手机通讯录中也可与对方对话。只要您知道对方的电话号码,您就可以建立一个链接,允许您与对方对话,点击该链接会直接打开对话窗。WhatsApp 手机应用程式和网页版本支持点击对话功能。
如要建立链接,请使用 https://wa.me/<number>,其中的<number>请填入联系人的完整国际格式电话号码,省略任何前方的零号、括号或破折号。更多有关国际格式电话号码的完整消息,请阅读 此文章。请注意,电话号码必须已绑定到一个有效的 WhatsApp 帐号。
正确:https://wa.me/15551234567 不正确:https://wa.me/+001-(555)1234567>
1.简而言之我们只要用https://wa.me/ + 用户手机号码 新建一个链接进行跳转就能实现我们的需求。话不多说直接上代码:
NSString *whatsappPhoneMumber = @"133XXXXXXXX”;
NSString *url = [NSString stringWithFormat:@"https://wa.me/86%@",whatsappPhoneMumber];
NSURL *whatsappURL = [NSURL URLWithString: @"whatsapp://"];
NSURL *ChatsURL = [NSURL URLWithString: url];
//判断本地是否存在WhatsApp应用,存在才进行跳转
if ([[UIApplication sharedApplication] canOpenURL: whatsappURL]) {
[[UIApplication sharedApplication] openURL: ChatsURL];
} else {
// Cannot open whatsapp
NSLog(@"不能打开WhatsApp");
}
需要注意的是:在代码运行之前我们需要先在info.plist 文件添加允许访问 WhatsApp 的名单,否则无法跳转。
WhatsApp名单或者将 info.plist 以 Source Code 方式打开,添加以下代码:
<key>LSApplicationQueriesSchemes</key>
<array>
<string>whatsapp</string>
</array>
代码运行效果:
6E8A24DBC4290968D0AD57D4F1BF3033.png2.如果想在跳转后附带上文字也很简单,在后面拼接上text即可
格式:https://wa.me/手机号码/?text=对话文字,
NSString *urlencodedtext = @"预先填入内容"
NSString *whatsappphonenumber = @"133XXXXXXXX";
NSString *url = [NSString stringWithFormat:@"https://wa.me/86%@/?text=%@",whatsappphonenumber,urlencodedtext];
参考链接:
https://www.jianshu.com/p/d66a8aef8071
https://faq.whatsapp.com/zh_cn/iphone/26000030/?category=5245251
网友评论