在iOS上通过URL方案启动Viber应用程序

8
我正在制作一款iOS应用程序,可以打开Viber应用程序并自动拨打电话或进入与某人的聊天窗口。是否有Viber的URL方案来实现这一点,例如:
viber://tel:<phone_number>
viber://chat:<phone_number>

我按照这个链接操作,但它只适用于Android。

10个回答

14

截至目前(2017年3月26日),我发现以下URI可以使用:

  • viber://add?number=NUMBER - 打开用户页面
  • viber://forward?text=foo - 将文本与选定的用户共享
  • viber://chats - 打开聊天标签页
  • viber://calls - 打开电话标签页
  • ??? - 找不到如何打开用户/联系人标签页
  • viber://public - 打开公共标签页
  • viber://more - 打开更多标签页(排行榜中的最后一个)

还有一些与公共账号交互的链接 https://developers.viber.com/tools/deep-links/index.html - viber:// pa?chatURI = hello&context = abcdefg&text = hi - 尝试向hello公共账户写入hi

支持论坛:https://support.viber.com/

他们还有Chrome扩展程序 - https://support.viber.com/customer/en/portal/articles/2191386-new-chrome-web-extension#top


但是当用户的设备没有安装Viber软件/移动应用程序时,它不会对任何操作做出响应。这对用户来说很困惑。是否有任何方法可以在他们的设备上未安装Viber时向他们显示任何消息或其他内容? - Foysal imran

9
我向Viber支持发送了一封邮件,他们告诉我不再支持这种类型的URL(使用电话号码打开Viber通话/聊天)。当输入Viber版本为5.6时。
看看他们的回答:
support@viber.com:
“谢谢您联系我们。 不幸的是,在Viber中没有这样的选项。”
唯一发现的是一个用于转发消息的URL:https://www.viber.com/en/developers/share_on_viber 您可以指定文本但不能指定收件人
例如:
viber://forward?text=foo

7
viber://contact?number= mobile number

这将打开特定用户的联系人。让用户选择聊天和通话。
这对我有用!


5
我找到了一种“几乎”可以使用Viber进行通话的方法 - 通过添加联系人:
viber://add?number=0123456789

这将打开Viber的“添加联系人”对话框,用户在将其添加为新联系人后最终可以拨打预期的号码。
我已在5.6版Viber上测试过。同时也可从HTML中使用。
<a href="viber://add?number=%2B49150123456789">Viber me</a>

然而,如果联系人不存在,则第一次单击只会打开对话框,保存新联系人并返回到您的应用程序/页面。 再次单击相同的链接将直接打开联系人视图,并显示呼叫按钮。祝福!

4

这指向联系页面

viber://contact?number=38095xxxxxxx

重要提示:不要在号码前加上+,否则无法使用


Viber未能识别没有+号的号码。在我添加了加号后,它按预期工作。 - Sergei
这对我不起作用。Viber仍然支持这个吗? - Shu.T
@Shu.T,它正常工作了。我今天测试过了。 - cgb_pandey

4
您可以使用以下代码来实现您想要的功能:
NSString *phoneNumber = @"1112223333";
NSString * const viberScheme = @"viber://";
NSString * const tel = @"tel";
NSString * const chat = @"chat";
NSString *action = @"<user selection, chat or tel>"; // this could be @"chat" or @"tel" depending on the choice of the user

if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:viberScheme]]) {

    // viber is installed
    NSString *myString;
    if ([action isEqualToString:tel]) {
        myString = [NSString stringWithFormat:@"%@:%@", tel, phoneNumber];
    } else if ([action isEqualToString:chat]) {
        myString = [NSString stringWithFormat:@"%@:%@", chat, phoneNumber];
    }

    NSURL *myUrl = [NSURL URLWithString:[viberScheme stringByAppendingString:myString]];

    if ([[UIApplication sharedApplication] canOpenURL:myUrl]) {
        [[UIApplication sharedApplication] openURL:myUrl];
    } else {
        // wrong parameters
    }

} else {
    // viber is not installed
}

2
这确实将我重定向到Viber,但会弹出一个警告,显示“请求的页面不可用”。 - Bhumit Mehta
如果一切正确,这可能意味着Viber for iOS不支持此功能。我的建议是尝试打开Viber本机iOS应用程序的网站并查看使用的URL。我知道这是一个逆向工程任务。 - Juan Catalan

1
这是英文翻译成中文的结果:
这个有效: "viber://chats" 或者 "viber://calls"

0

对于Swift,你可以这样做 :)

let viberShareUrl = "viber://forward?text=\(shareUrl)"
let url:NSURL =NSURL(string: viberShareUrl)!  
UIApplication.sharedApplication().openURL(url)

虽然这段代码片段可能解决了问题,但包括解释真的很有帮助,以提高您的帖子质量。请记住,您正在回答未来读者的问题,而不仅仅是现在提问的人!请[编辑]您的答案以添加解释,并指出适用的限制和假设。 - Toby Speight

0

我不知道这在iOS上是否可用,但它在我的Viber桌面版Windows 10上有效。

<a href="viber://chat?number=0912222222" class="viber"></a>

这将打开一个与目标人员的聊天窗口。在2021年7月7日测试通过。


1
今天viber://chat?number=NUMBER的URI是有效的(我认为其他答案中提到的URI也是有效的),但是要让它在iOS上正常工作,有一件重要的事情要做 - 不要忘记将Viber方案添加到Info.plist中的查询URL方案中。 - Razvodovsky
1
什么样的计划?我在哪里可以找到它? - Rezo Joglidze

-2

你可以使用以下方式进行检查

[[UIApplication sharedApplication] canOpenURL:@"viber://url"];

如果设备上安装了Viber应用,并且Viber处理此URL方案,它将返回true,否则返回false。

1
这段代码无法运行,请发布可用的代码。canOperURL:需要一个NSURL,而你正在传递一个NSString - Juan Catalan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接