2013-04-23 398 views
2

我正在開發一個具有通話和消息功能的應用程序,我想檢查是否安裝了SIM卡,因爲我正在面臨消息傳遞的問題,因爲它提供「消息發送成功「如何檢查是否安裝了SIM卡

請幫我一把。

+0

我想你想檢測SIM卡的availability.Am我吧? – 2013-04-23 10:06:01

+0

您不應該這樣做,因爲您的應用程序也可以在不支持SIM卡的iPad WiFi或iPod touch上運行。 'MFMessageComposeViewController'有一個類方法'canSendText',它將指示設備是否能夠發送消息。爲了檢查設備是否支持呼叫,只需檢查是否可以打開'call:'。 – rckoenes 2013-04-23 10:10:59

回答

5

可能有不同的方法,但一種方法是使用MFMessageComposeViewController類來查看是否可以發送文本消息。如果你可以,然後sim可用,否則不可以。

if ([MFMessageComposeViewController canSendText]) { 
    NSLog(@"SIM Available"); 
} else { 
    NSLog(@"no SIM card installed"); 
} 

在情況下,你有可用的iMessage那麼這可能返回你真的,你也可以檢查是否可以撥打電話,你可能想使用CTTelephonyNetworkInfo用於這一目的。

+0

我正在檢查像這樣,如果SIM卡安裝或沒有,它工作正常。但我收到警告消息「無法發送消息」「文本消息在x設備中不可用」。我怎樣才能防止這種警報消息? @nsgulliver – Balu 2015-02-03 06:06:25

+0

如果您使用模擬器,此代碼非常有用。不在電話裏。 – Poles 2015-11-27 07:16:57

+0

@nsgulliver,'canSendText'被調用,但如果sim沒有插入我的設備中,我會得到'MessageComposeResultFailed'狀態。如果我在我的設備中插入SIM卡併成功發送消息。我很困惑SIM卡是否需要'MFMessageComposeViewController'發送消息成功?請你解釋一下。 – 2016-04-18 11:55:07

1

首先,你必須確保設備是iPhone(iPod的不是或iPad),然後檢查設備是否可以進行呼叫或沒有,就這樣............

if([[UIDevice currentDevice].model isEqualToString:@"iPhone"]) 
{ 
    if ([[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:@"tel:123456"]]) 
    { 
     NSLog(@"Device can make call or send message"); 
    } 
    else 
    { 
     NSLog(@"Device can not make call or send message"); 
    } 
} 
else 
{ 
    NSLog(@"Device can not make call or send message"); 
} 

希望它能幫助你........