19

iOS で電話番号をダイヤルしようとしていますが、テストするシミュレーターと iPod Touch しかありません。

コードは次の行に沿って何かを使用します。

window.location.href = 'tel:01234567890';

Android では正常に動作しますが、iOS では次のように停止します。

エラーで Web ページを読み込めませんでした: URL を表示できません

さて、これは以前に尋ねられたことに気づきましたが、しばらく前からの一般的なコンセンサスは「機能しません。プラグインを使用する必要があります」でした。ただし、これについてはしばらくの間、多くの質問がありませんでした。プログラムで実行するときに機能することを示唆しているように見える質問はありません(上記のようにwindow.location.href)。iOS PhoneDialerと同じプラグインの新しいバージョンを試しましたが、どちらも XCode にエラーがあります ( ARC forbids explicit message send of 'release') - 少し面倒で、これを実行することはできますが、PhoneGap はプラグインを見つけられません。この方法でレンガの壁にぶつかっていますが、これほど単純なものが必要であるとは信じられません。

セキュリティ上の理由から、番号を自動ダイヤル/自動呼び出しできないことはわかっていますが、番号が事前入力されたダイヤラーを開くだけで済みmailto:info@example.comます。人口?

だから、私の質問は次のとおりです。

  • これは、PhoneGap、iOS、または XCode の最近のアップデートで変更されましたか?
  • それとも、iPod や Simulator ではできないのですが、iPhone では問題なく動作するのでしょうか?
  • どうすれば修正できますか?:)
4

5 に答える 5

41

使用している Cordova のバージョンが指定されていないため、バージョン > 3 であると仮定します。

バージョン 3 以降のプラグインであるInAppBrowserがインストールされていることを確認してから、次のように Javascript を介して呼び出してリンクを開きます。

window.open('tel:12345678', '_system')

_systemシステム独自のブラウザで開き、呼び出しダイアログが開きます。http://maps.apple.com/に対して使用すると、マップ アプリで開き、特別な URL で開く他のアプリでも同様です。

備考:

  • InAppBrowser プラグインのドキュメントで説明されているように、window.open関数は自動的に設定されません。自分でやる必要があります: window.open = cordova.InAppBrowser.open;. 代わりに、直接使用できますcordova.InAppBrowser.open('tel:12345678', '_system');
  • 番号に空白が含まれていないことを確認してください (+ プレフィックスは問題ありません)。たとえば、numが文字列であると仮定して、次のような関数を使用できます。

関数:

function placeCall(num) {
    if (window.cordova) {
        cordova.InAppBrowser.open('tel:' + num.replace(/\s/g,''), '_system');
    }
}
于 2013-10-28T19:00:16.873 に答える
7

以下のコードは、iPhone で問題なく動作します:-

window.open('tel:123456', '_system');

シミュレーターはダイヤラーをサポートしていません。時間を無駄にする必要はありません。

于 2016-05-06T09:46:06.170 に答える
2

iOS では PhoneGap アプリでリンクが機能しない原因となるため、href の電話番号にもフォーマットが含まれていないことを確認してください。たとえば、tel:(03) 9000 5555 ではなく、tel:0390005555 を使用します。

于 2014-02-26T00:10:41.820 に答える
1

これは Cordova の問題ではないと思います。ネイティブ iOS では、シミュレーターや iPod touch でダイヤラーを起動できないことはわかっています。実際の iPhone でこれをテストする必要があります。

于 2013-10-28T19:05:10.390 に答える