Diese UIApplication.shared.openURL((URL(string: "tel://\(phoneNumber)")!))
sagt nicht, ob es eine SIM-Karte hat oder nicht, sondern nur, ob das Gerät die Möglichkeit hat, einen Anruf zu tätigen. Zum Beispiel : Bei einem iPhone mit oder ohne SIM wird true zurückgegeben, aber bei einem iPod Touch wird immer false zurückgegeben, genauso wie bei einem iPad, das keine SIM-Option hat, false zurückgegeben wird.
Hier ist der Code, der alles umfassend überprüft! (Verwendung von Swift 3.0)
if UIApplication.shared.canOpenURL(URL(string: "tel://\(phoneNumber)")!) {
var networkInfo = CTTelephonyNetworkInfo()
var carrier: CTCarrier? = networkInfo.subscriberCellularProvider
var code: String? = carrier?.mobileNetworkCode
if (code != nil) {
UIApplication.shared.openURL((URL(string: "tel://\(phoneNumber)")!))
}
else {
var alert = UIAlertView(title: "Alert", message: "No SIM Inserted", delegate: nil, cancelButtonTitle: "ok", otherButtonTitles: "")
alert.show()
}
}
else {
var alert = UIAlertView(title: "Alert", message: "Device does not support phone calls.", delegate: nil, cancelButtonTitle: "ok", otherButtonTitles: "")
alert.show()
}
Auf diese Weise können wir sicherstellen, dass das Gerät Anrufe unterstützt oder nicht.