使用 appcelerator 调用 phone

Calling phone with appcelerator

我正在尝试在设备上拨打电话,但设备什么都不做...

这是我的代码,我使用的是 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();

有什么帮助吗?

您的呼叫代码似乎是正确的。我想什么都不会发生,因为 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") 以检查您是否在其中。

希望对您有所帮助

您的 'dial a number' 代码似乎确实正确。我想建议你构建你的代码有点不同,我会给你一个我最近的项目的例子。

您可以在 config.json 中为您的不同环境(生产、开发)配置 phone 编号(假设您正在处理一个 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