Le app per iPhone sono autorizzate a effettuare chiamate senza l'interazione dell'utente?

10

Leggevo di una chiamata persa truffa proprio ora dove l'utente viene addebitato anche se non chiama il numero indietro. Mi è venuto in mente che un'app maliziosa per iPhone poteva effettuare chiamate a numeri premium per ingannare gli utenti dal denaro - infatti, appare questo è successo in passato.

In base alla documentazione di Apple :

When a user taps a telephone link in a webpage, iOS displays an alert asking if the user really wants to dial the phone number and initiates dialing if the user accepts. When a user opens a URL with the tel scheme in a native app, iOS does not display an alert and initiates dialing without further prompting the user.

Mi sembra che un'app per iPhone apparentemente innocua possa, ad esempio, attendere fino a quando il telefono non viene lasciato in carica (e quindi probabilmente non viene preso in considerazione dall'utente) e quindi avviare una chiamata a un numero a tariffa premium per mettere in rete lo sviluppatore un bonus in ordine. Non sembra esserci alcuna autorizzazione in iOS Posso cambiare per evitare questo comportamento, dal momento che questo sta aprendo l'app del telefono con un URL piuttosto che accedere a tutti i dati del telefono.

Qualcuno può confermare se la mia comprensione è corretta e, in tal caso, perché mai Apple non ha chiuso un buco così profondo?

    
posta Cartroo 29.04.2016 - 08:51
fonte

3 risposte

8

Ho verificato sperimentalmente il comportamento di iOS tentando di avviare una chiamata da una delle mie app.

Ecco i risultati:

  • È possibile avviare una chiamata telefonica programmaticamente senza conferma da parte dell'utente. Ho appena scritto una singola riga di codice che viene eseguita subito dopo che l'app è stata caricata. Ciò significa che se la tua app è in primo piano può avviare una chiamata in qualsiasi momento, anche senza che l'utente debba toccare da nessuna parte.
  • Ho inviato una notifica push remota silenziosa all'App per riattivare l'app se non è in esecuzione, quindi eseguire lo stesso codice. Nessuna chiamata è stata avviata; iOS non consente a un'app di avviare una telefonata se l'app è in esecuzione in background.

Quindi, rispondendo alle tue domande, l'unico modo per iniziare una telefonata senza che l'utente se ne accorga è in qualche modo convincere l'utente a lasciare l'applicazione dannosa in esecuzione in primo piano e quindi avviare la telefonata, poiché iOS non consenti questa operazione se l'app è in background.

Attualmente iOS non fornisce alcun meccanismo per bloccare l'avvio di telefonate da una particolare app, ma può avvenire solo se l'app è in primo piano.

    
risposta data 29.04.2016 - 14:36
fonte
4

Ho creato un'app di prova per verificarlo. L'app può aprire URL come tel://123456789 solo quando è in primo piano e attivo. Quando chiamo questo codice anche dopo aver inserito lo stato di background, l'API per aprire questo URL non ha fatto nulla. Per rispondere alla tua domanda, le app non saranno in grado di effettuare una chiamata a tua insaputa.

Per testare questo incolla questo in AppDelegate :

- (void)applicationDidEnterBackground:(UIApplication *)application {
   [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://123456789"]];
}
    
risposta data 29.04.2016 - 13:33
fonte
1

Quando provi ad avviare una chiamata su iOS > = 10.3, verrà sempre visualizzato un popup all'utente. Documenti

    
risposta data 08.01.2019 - 12:59
fonte

Leggi altre domande sui tag