2013年5月8日

偵測iPhone電信業者與來電、撥號、掛斷電話

開發者可以使用CoreTelephony framework取得一些跟電話有關的功能
首先在專案的Build Phases的Link Binary With Libraries中,加入CoreTelephony framework



接下來,取得電信業者相關資訊
#import "CTTelephonyNetworkInfo.h"
#import "CTCarrier.h"
    CTTelephonyNetworkInfo *info = [[CTTelephonyNetworkInfo alloc] init];
    CTCarrier *carrier = [info subscriberCellularProvider];
    NSLog(@"carrier: %@", [carrier description]);


log結果如下
2013-05-08 23:09:12.671 IMSI[6121:907] carrier: CTCarrier (0x2105f170) {
 Carrier name: [台湾大哥大]
 Mobile Country Code: [466]
 Mobile Network Code:[97]
 ISO Country Code:[tw]
 Allows VOIP? [YES]
}

你也可以偵測電話撥入與掛斷電話的狀態
只要實作一個callback即可

#import "CTCallCenter.h"
    CTCallCenter *center = [[CTCallCenter alloc] init];
    [center setCallEventHandler:^(CTCall *call) {
        NSLog(@"call1: %@", [call description]);
    }];


log結果如下
2013-05-08 23:23:09.025 IMSI[6278:30f] call:CTCall (0x2087c700) {
 callState: [CTCallStateIncoming]
 Call ID: [882BC855-0DDA-47F4-9F0E-80A378911AAF]
}
2013-05-08 23:23:16.257 IMSI[6278:110b] call:CTCall (0x2085ee30) {
 callState: [CTCallStateDisconnected]
 Call ID: [882BC855-0DDA-47F4-9F0E-80A378911AAF]
}


當然也可以偵測caller (來電顯示號碼)
但是那是private API,用了被貧果抓到會gg
所以就不介紹了...

沒有留言:

張貼留言