88 lines
2.3 KiB
Objective-C
88 lines
2.3 KiB
Objective-C
|
|
|
|
#import <Foundation/Foundation.h>
|
|
#import "CallListner.h"
|
|
|
|
static CallListner* _CallListner;
|
|
|
|
@implementation CallListner
|
|
|
|
+(CallListner*) instance
|
|
{
|
|
if (_CallListner != nil) {
|
|
return _CallListner;
|
|
} else {
|
|
_CallListner =(CallListner*)([[CallListner alloc] init]);
|
|
|
|
}
|
|
return _CallListner;
|
|
}
|
|
|
|
- (id)init:(NSString *)listner
|
|
{
|
|
_unityListner = listner;
|
|
[self initCallCenter];
|
|
|
|
return self;
|
|
}
|
|
|
|
- (void)initCallCenter {
|
|
bool *isComingCall = false;
|
|
_callCenter = [[CTCallCenter alloc] init];
|
|
_callCenter.callEventHandler = ^(CTCall* call) {
|
|
dispatch_async(dispatch_get_main_queue(), ^{
|
|
if ([call.callState isEqualToString:CTCallStateDisconnected]) {
|
|
// NSLog("CTCallCenter:Call has been disconnected");
|
|
NSLog(@"电话挂断");
|
|
if(isComingCall) {
|
|
[self sendUnityMessage:@"onEndincomeCall", ""]
|
|
} else {
|
|
[self sendUnityMessage:@"onEndOutGoingCall", ""]
|
|
}
|
|
} else if ([call.callState isEqualToString:CTCallStateConnected]) {
|
|
// NSLog("CTCallCenter:Callhasjustbeen connected");
|
|
NSLog(@"电话接通");
|
|
if(isComingCall) {
|
|
[self sendUnityMessage:@"onConectedComingCall", ""]
|
|
} else {
|
|
[self sendUnityMessage:@"onConectedOutGoingCall", ""]
|
|
}
|
|
} else if ([call.callState isEqualToString:CTCallStateIncoming]) {
|
|
// NSLog("CTCallCenter:Call is incoming");
|
|
NSLog(@"电话被叫");
|
|
isComingCall = true;
|
|
} else if ([call.callState isEqualToString:CTCallStateDialing]) {
|
|
// NSLog("CTCallCenter:Call is Dialing");
|
|
NSLog(@"电话主动拨打电话");
|
|
isComingCall = false;
|
|
} else {
|
|
// NSLog("CTCallCenter:Nothing is done");
|
|
NSLog(@"电话其他状态");
|
|
}
|
|
});
|
|
};
|
|
}
|
|
|
|
-(void) sendUnityMessage:(const NSString*)method with:(NSString*)msg
|
|
{
|
|
if(_unityListner != nil && msg != nil) {
|
|
UnitySendMessage([_unityListner UTF8String],
|
|
[method UTF8String], [msg UTF8String]);
|
|
}
|
|
}
|
|
|
|
@end
|
|
|
|
#if __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
void _init(const char* goName);
|
|
|
|
#if __cplusplus
|
|
}
|
|
#endif
|
|
|
|
void _init(const char* goName) {
|
|
[[CallListner instance] init:[NSString stringWithUTF8String:goName]];
|
|
}
|