iPhoneアプリには、ユーザーの操作なしで電話をかける権限がありますか?


9

たった今、番号にかけ直さなくてもユーザーに請求される不在着信詐欺について読んでいまし。悪意のあるiPhoneアプリがプレミアム番号に電話をかけ、金銭でユーザーを詐欺する可能性があると私は思いました-実際、これは過去に起こったようです。

Apple自身のドキュメントによると:

ユーザーがウェブページの電話リンクをタップすると、iOSはユーザーが本当に電話番号をダイヤルするかどうかを尋ねるアラートを表示し、ユーザーが受け入れる場合はダイヤルを開始します。ユーザーがネイティブアプリでtelスキームを使用してURLを開くと、iOSはアラートを表示せず、ユーザーにそれ以上プロンプトを表示せずにダイヤルを開始します。

明らかに無害なiPhoneアプリは、たとえば、電話が充電されたままになる(したがって、ユーザーが参加していない可能性が高い)まで待ってから、プレミアムレート番号への呼び出しを開始して、開発者にきちんとしたボーナスを差し上げることができるように思えます。iOSでは許可がないようですが、これは電話のデータにアクセスするのではなく、URLで電話アプリを開いているため、この動作を防ぐために変更できます。

私の理解が正しいかどうか誰もが確認できますか。もしそうなら、なぜAppleがこのような大きな穴を閉じていないのですか?

回答:


8

私は自分のアプリの1つから電話をかけようとして、iOSの動作を実験的に確認しました。

結果は次のとおりです。

  • ユーザーの確認なしにプログラムで電話をかけることができます。アプリが読み込まれた直後に実行されるコードを1行書きました。つまり、アプリがフォアグラウンドにある場合は、ユーザーがどこをタップする必要がなくても、いつでも通話を開始できます。
  • アプリにサイレントリモートプッシュ通知を送信して、実行されていない場合にアプリをウェイクアップし、同じコードを実行します。通話は開始されませんでした。iOSでは、アプリがバックグラウンドで実行されている場合、アプリは通話を開始できません。

質問に答える、ユーザーに気付かれずに通話を開始する唯一の方法は、iOSがこの操作を許可していないため、ユーザーに悪意のあるアプリケーションをフォアグラウンドで実行したままにしておき、その後通話を開始するようにユーザーを説得することですアプリがバックグラウンド化されている場合。

現在、iOSには特定のアプリからの通話の開始をブロックするメカニズムはありませんが、アプリがフォアグラウンドにある場合にのみ発生します。


包括的な調査、素晴らしい答えをありがとう。フォアグラウンドでしか聞こえないのはうれしいですが、手助けはできませんが、無人でフォアグラウンドに置かれる可能性のあるアプリを発明するのはそれほど難しくないと思います-タイムラプスを行うカメラアプリはタイプの良い例です。他のアプリでURLを開くことは、他のアプリを開くための許可であることが望ましいです-毎回ではなく、外部アプリごとに初めて確認しただけです。ただし、UXに影響があることは認めます。誰もが警戒しなければならないだけだと思います。
Cartroo

5

これを確認するためのテストアプリを作りました。アプリtel://123456789は、フォアグラウンドでアクティブな場合などにのみURLを開くことができます。バックグラウンド状態に入った直後でもこのコードを呼び出すと、このURLを開くAPIは何もしませんでした。だからあなたの質問に答えるために-アプリはあなたの知識なしに電話をかけることができません。

これをテストするには、これを次の場所に貼り付けますAppDelegate

- (void)applicationDidEnterBackground:(UIApplication *)application {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
}

コードに感謝します。私が両方の答えを受け入れることができれば私はそうします。
Cartroo

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.