2015-02-05 6 views
2

기기에 셀룰러 서비스 (데이터 제외)가 있는지 확인하고 전화를 걸 수 있는지 확인하려고합니다. 현재 [[UIApplication sharedApplication] canOpenURL:numberURL]을 사용하고 있습니다. 기기가 전화를 걸 수 있는지를 알고있는 경우, 분명히 YES을 반환 할 것입니다. 읽으면 iPhone 또는 다른 기기 일 것입니다. 현재 운송 업체 서비스가없는 기기를 테스트 중입니다. 이 문제에 대한 도움이 있으면 대단히 감사하겠습니다.휴대 전화에 셀룰러 서비스가 있는지 검색 iOS 8

+1

은 [이 질문] (도움 http://stackoverflow.com/questions/853467/retreiving-carrier-name-from-iphone-programmatically) – Daniel

+0

감사합니다. 이것은 통신 회사 및 기타 네트워크 상태에 대한 정보를 제공하지만 장치가 서비스를 제공하는지 여부는 여전히 판단 할 수 없습니다. 내 장치가 "No Service (서비스 없음)"라고 표시하더라도 이전에 AT & T에서 사용하던 캐리어 및 코드를 사용할 수 있습니다. –

답변

1

내가 아는 한 'CoreTelephony'프레임 워크로 휴대 전화의 이동 통신사에 대한 정보를 가지고 놀 수 있습니다.

하는 것은 자신을 위해 체크 아웃 : https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Reference/CoreTelephonyFrameworkReference/index.html#//apple_ref/doc/uid/TP40009603

https://developer.apple.com/library/prerelease/ios/samplecode/CoreTelephonyDemo/Introduction/Intro.html#//apple_ref/doc/uid/DTS40010746

편집 :

https://developer.apple.com/library/prerelease/ios/documentation/NetworkingInternet/Reference/CTTelephonyNetworkInfo/index.html#//apple_ref/occ/instp/CTTelephonyNetworkInfo/subscriberCellularProvider

클래스 'CTCarrier'을 시도하고이 문제가 해결되는지 확인합니다.

@property(readonly, retain) CTCarrier *subscriberCellularProvider 

Discussion 
A CTCarrier object that contains information about the user’s home cellular service provider—that is, the provider with whom the user has an account. This information is available immediately after you allocate and initialize the CTTelephonyNetworkInfo object. 
+0

맞아요,하지만 장치에 API가 있는지 여부를 결정할 수 없습니다. 나는 여러 가지 접근법을 시도했지만 모두 작동하지 않는 것 같습니다 ... –

+0

자세한 정보를 제공해 주시겠습니까? – Popeye

+0

'CTCarrier'는 전화가 작동 중인지 아닌지를 탐지하는데 사용되는 것을 찾을 수있는 어떤 것도 반환하지 않습니다. 마찬가지로 내 질문에 명시된 바와 같이 나는이 장치로 서비스를 가지고 있었고 더 이상 서비스를받지 못해서 전화를 걸 수 없으며 전화가 셀룰러 서비스를 가지고있는 것과 같은 정보를 'subscriberCellularProvider'가 반환합니다. –

-1

아마도 Reachability과 같은 것을 찾고있을 것입니다. 이 클래스를 사용하여 네트워크에 대한 연결 및 장치가 연결된 수단 (ReachableViaWiFi 또는 ReachableViaWWAN)을 확인할 수 있습니다.

Reachability를 사용할 때 알아야 할주의 사항이 있습니다. 때때로 도달 가능성은 연결이 없다고보고하지만 요청이 시도되면 연결이 실제로 설정 될 수 있습니다. Reachability의 가장 좋은 사용법은 요청이 실패한 후, 장치가 연결을 할 수 없다는 것을 확신 할 수 있고이를 사용자에게보고 할 수있는 경우입니다.

+0

이것은 유효한 인터넷 연결 만 통지합니다. –

+0

사실, 그렇지만 가짜 음수가 가능하므로 항상 먼저 요청을 시도해야합니다. –

+0

모든 이동 통신사가 Wi-Fi (iOS 8)를 통한 통화를 허용하지는 않으므로 문제가 해결되지 않을 것으로 생각됩니다. 사용자에게 무선 또는 데이터를 통해 유효한 인터넷 연결이 있지만 현재 계획에 음성이 없다면이 문제가 해결되지 않을 수 있습니다. –

0

사용자 디바이스는 SIM 카드와 캐리어를 가지고 있는지 확인할 수

`CTTelephonyNetworkInfo telephonyNetworkInfo = [CTTelephonyNetworkInfo의 ALLOC] INIT];

CTCarrier 캐리어 = telephonyNetworkInfo subscriberCellularProvider] 전화 캐리어가 있는지 carrier의 다음 특성 중 어떤`

검사보고 :

carrier.carrierName carrier.carriermobileCountryCode carrier.mobileNetworkCode carrier.isoCountryCode

+0

서비스가없는 SIM 카드가 들어있는 장치 (예 : 사용중인 장치)는 위에서 사용한 모든 속성 값을 마지막에 사용 된 이동 통신사에서 유지하므로 SIM 카드가 포함되어 있지만없는 장치에는 작동하지 않습니다 서비스. –

+0

그러면 'CTGetSignalStrength'를 사용할 수 있습니다. 실제로 문서화되어 있지는 않지만 Google로 전송하거나 http://stackoverflow.com/questions/8254327/get-carrier-name-and-signal-strength-return-wrong을 사용할 수 있습니다. -value-in-iphone 또는 http://stackoverflow.com/questions/15427507/how-to-find-out-carrier-signal-strength-programatically – Mepla

+0

앱 스토어에서 허용하는 'CTGetSignalStrength'가 있습니까? –