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

通过iOS上的URL方案启动Viber应用程序,ios,url-scheme,viber,Ios,Url Scheme,Viber,我正在制作一个iOS应用程序,它可以打开Viber应用程序,自动给某人打电话或与此人进入聊天窗口。Viber是否有这样的url方案,例如: viber://tel:<phone_number> viber://chat:<phone_number> viber://tel: viber://chat: 我遵循了链接,但它是针对Android的。您可以使用 [[UIApplication sharedApplication] canOpenURL:@"viber://u

我正在制作一个iOS应用程序,它可以打开Viber应用程序,自动给某人打电话或与此人进入聊天窗口。Viber是否有这样的url方案,例如:

viber://tel:<phone_number>
viber://chat:<phone_number>
viber://tel:
viber://chat:
我遵循了链接,但它是针对Android的。

您可以使用

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

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

您可以使用此代码来完成您想要的:

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
}
NSString*phoneNumber=@“111222333”;
NSString*const viberScheme=@“viber://”;
NSString*const tel=@“tel”;
NSString*const chat=@“chat”;
NSString*action=@“;//根据用户的选择,这可能是"聊天"或"电话"
if([[UIApplication sharedApplication]canOpenURL:[NSURL URLWithString:viberScheme]]{
//viber已安装
NSString*myString;
if([操作IsequalString:tel]){
myString=[NSString stringWithFormat:@“%@:%@”,电话,电话号码];
}else if([操作IsequalString:chat]){
myString=[NSString stringWithFormat:@“%@:%@”,聊天室,电话号码];
}
NSURL*myUrl=[NSURL URLWithString:[viberScheme stringByAppendingString:myString]];
if([[UIApplication sharedApplication]canOpenURL:myUrl]){
[[UIApplication sharedApplication]openURL:myUrl];
}否则{
//错误参数
}
}否则{
//未安装viber
}
这项工作: "viber://chats”“或者
"viber://calls“

我向Viber支持部门发送了一封邮件,他们告诉我,这种URL(使用电话号码打开Viber呼叫/聊天)不再受支持。当输入Viber版本为5.6时

看看他们的答案:

support@viber.com

“感谢您联系我们。 不幸的是,Viber中没有这样的选项。”


我唯一找到的是转发邮件的url: 您可以指定文本,但不能指定收件人

例如:

viber://forward?text=foo
我发现了一种使用Viber“几乎”拨打电话的方法-添加联系人:

viber://add?number=0123456789
这将打开Viber“添加联系人”对话框,用户可以在添加为新联系人后最终调用预期号码

在5.6 Viber上进行了测试。 也适用于HTML:

<a href="viber://add?number=%2B49150123456789">Viber me</a>

但是,如果联系人不存在,第一次单击只会打开对话框,保存新联系人并返回应用程序/页面。 再次单击同一链接将直接打开带有呼叫按钮的联系人视图


干杯

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

到目前为止(2017年3月26日),我发现这个URI正在工作:

  • viber://add?number=NUMBER -打开用户页
  • viber://forward?text=foo -与选定用户共享文本
  • viber://chats -打开聊天选项卡
  • viber://calls -打开“呼叫”选项卡
  • ??-找不到如何打开用户/联系人选项卡
  • viber://public -打开一个公共选项卡
  • viber://more -打开更多选项卡(行中的最后一个)
以及一些与公共账户互动的链接 - viber://pa?chatURI=hello&context=abcdefg&text=hi -尝试向hello公共帐户写入hi

支持论坛:

他们有镀铬的扩展-

它将打开特定的用户联系人。让用户选择聊天和通话。

这对我有用

这指向联系人页面

viber://contact?number=38095xxxxxxx


重要提示:不要将+放在数字的开头,否则它将不起作用

此代码不起作用,请发布工作代码<代码>canOperURL:需要一个
NSURL
并且您正在传递一个
NSString
这确实会将我重定向到viber,但会导致一个警报,提示“请求页面不可用”。如果一切正常,则可能意味着viber for iOS不支持此功能。我的建议是尝试打开Viber原生iOS应用程序的网站,并查看所使用的url。我知道这是一项逆向工程任务。虽然这段代码片段可能会解决这个问题,包括一个提高你文章质量的解释。记住,你是在将来回答读者的问题,而不仅仅是现在提问的人!请您的回答添加解释,并说明适用的限制和假设。Viber不识别没有+的数字。在我添加后,加上它的工作如预期。它不适合我。viber是否仍支持此功能?
let viberShareUrl = "viber://forward?text=\(shareUrl)"
let url:NSURL =NSURL(string: viberShareUrl)!  
UIApplication.sharedApplication().openURL(url)
viber://contact?number= mobile number