用appcelerator拨打电话

时间:2016-02-04 19:17:49

标签: titanium appcelerator appcelerator-titanium

我尝试使用设备拨打电话但设备没有任何内容......

这是我的代码,我使用的是Appcelerator 4.4.0.201511241829,IOS 9.2

    var dialog = Ti.UI.createAlertDialog({
    cancel: 0,
    buttonNames: ['Cancel', 'Ok'],
    message: "Are you sure?" 

    });

    dialog.addEventListener('click', function(e){

     if (e.index !== e.source.cancel){

        // IF WE ARE BUILDING FOR DEVELOPMENT PURPOSES - TRY CALLING A FAKE NUMBER
        if(ENV_DEV){ 
              Titanium.Platform.openURL('tel:00000000');
        }
        // ELSE IF WE ARE BUILDING PRODUCTION - THEN USE THE LISTED NUMBER
        else if(ENV_PRODUCTION){
             Titanium.Platform.openURL('tel:00000000');
        }
    }  
});

dialog.show();

任何帮助?

2 个答案:

答案 0 :(得分:1)

您拨打电话号码的代码似乎是正确的。我想没有任何事情发生,因为ENV_DEVENV_PRODUCTION变量不是True,因此两个if语句不满足。

首先,我建议您添加else语句,以确保满足一个条件。您可以像这样修改代码:

// IF WE ARE BUILDING FOR DEVELOPMENT PURPOSES - TRY CALLING A FAKE NUMBER
if(ENV_DEV){ 
    Titanium.Platform.openURL('tel:00000000');
}
// ELSE IF WE ARE BUILDING PRODUCTION - THEN USE THE LISTED NUMBER
else if(ENV_PRODUCTION){
    Titanium.Platform.openURL('tel:00000000');
}else{
    Titanium.Platform.openURL('tel:00000000');
}

其次,您可以在每个语句中添加如此Ti.API.info("yourMsg")的控制台日志,以检查您是否存在。

我希望这很有用

答案 1 :(得分:1)

您的“拨号”代码确实看似正确。我想建议你将你的代码结构有点不同,我将从最近的一个项目中给你一个例子。

您可以在config.json中配置不同环境(prod,dev)的电话号码(假设您正在处理Alloy项目,而不是Classic Titanium项目),例如:

{
 "global": {
 "phoneNumber": tel:0032499001122"
},
 "env:development": {
  "phoneNumber": tel:0111111"
},
"env:test": {},
"env:production": {}, ..

这会将点击处理程序中的代码减少为:

if (e.index !== e.source.cancel){
   Ti.Platform.openURL(Alloy.CFG.phoneNumber);
}

因为您在启动应用程序时传递了环境,所以您不再需要检查代码中的环境。

如果您通过CLI运行应用程序,请不要忘记添加环境标志(-D开发),例如。

titanium build -p ios -T simulator -D development