사용 CoreTelephony 및 CTTelephonyCenter
관찰자 :
#include <CoreTelephony/CoreTelephony.h>
// Event handler
static void SignalStrengthDidChange(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
{
long int raw = 0;
long int graded = 0;
long int bars = 0;
CTIndicatorsGetSignalStrength(&raw, &graded, &bars);
printf("Signal strength changed! Raw: %li, graded: %li bars: %li\n", raw, graded, bars);
// Prints something like:
// Signal strength changed! Raw: -96, graded: 27 bars: 3
}
다른 함수에서 핸들러를 등록
// Register as a listener to the kCTIndicatorsSignalStrengthNotification notification to be notified when the signal strength changed.
CTTelephonyCenterAddObserver(CTTelephonyCenterGetDefault(), NULL, SignalStrengthDidChange, kCTIndicatorsSignalStrengthNotification, NULL, CFNotificationSuspensionBehaviorCoalesce);
// Get the initial strength.
SignalStrengthDidChange();
CFRunLoopRun();
가
iPhone Dev Wiki article on CTIndicators에서 적응.
이러한 방법은 더 이상 iOS SDK에서 8.4 (?)보다 더 이상 없습니다. 에 액세스하려면 함수와 상수를 통근 할 수있는 새 헤더 생성 : 나는 너무 개인 API를 사용
#include <CoreFoundation/CoreFoundation.h>
#if __cplusplus
extern "C" {
#endif
#pragma mark - API
/* This API is a mimic of CFNotificationCenter. */
CFNotificationCenterRef CTTelephonyCenterGetDefault();
void CTTelephonyCenterAddObserver(CFNotificationCenterRef center, const void *observer, CFNotificationCallback callBack, CFStringRef name, const void *object, CFNotificationSuspensionBehavior suspensionBehavior);
void CTTelephonyCenterRemoveObserver(CFNotificationCenterRef center, const void *observer, CFStringRef name, const void *object);
void CTTelephonyCenterRemoveEveryObserver(CFNotificationCenterRef center, const void *observer);
void CTIndicatorsGetSignalStrength(long int *raw, long int *graded, long int *bars);
#pragma mark - Definitions
/* For use with the CoreTelephony notification system. */
extern CFStringRef kCTIndicatorsSignalStrengthNotification;
#if __cplusplus
}
#endif
출처
2016-10-19 20:30:53
JAL
감사합니다. 그리고 이것이 사적으로 간주 될 것이라고 생각합니까? 이것이 appStore에 대해 받아 들일 수 있다면 더 좋을 것이기 때문에 – razvan
이것은 분명히 비공개 API입니다. 이것을 현대 SDK에서 컴파일하려면 수동으로'CoreTelephony' 상수와 함수를 extern해야했습니다. 이 선언을 포함하도록 내 대답을 편집합니다. – JAL