iphone中结束电话后返回自己的应用


分类: iPhone系统截获 2013-12-18 17:38  243人阅读  评论(0)  收藏  举报


大家想不想在自己的应用中拨打电话呀?打电话可以用openURL:这个API, 如:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]];但是当电话结束后,返回的是系统的拨打电话界面,如何才能返回自己的应用呢?这儿有两种方法与大家分享。

 

第一种是用UIWebView加载电话,这种是合法的,可以上App Store的。

代码如下:


1. // assuming you have an ivar to store a weak reference to a UIWebView:  
2. // UIWebView *phoneCallWebView;  
3. - (void) dialPhoneNumber:(NSString *)aPhoneNumber  
4. {  
5. "tel:%@",aPhoneNumber]];  
6. if ( !phoneCallWebView ) {          
7.         phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];  
8.     }  
9.     [phoneCallWebView loadRequest:[NSURLRequest requestWithURL:phoneURL]];  
10. }  
11. - (void) dealloc  
12. {  
13. // cleanup  
14.     [phoneCallWebView release], phoneCallWebView = nil;  
15.    [super dealloc];  
16. }

 


 

第二种是私有方法,不能上App Store的。



  1. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://10086"]];  

 


如何监听电话状态



分类: iPhone系统截获 2013-12-18 16:16  680人阅读  评论(2)  收藏  举报



[objc]  view plain copy



1. [plain] view plaincopy  
2. #import <CoreTelephony/CTCallCenter.h>    
3. #import <CoreTelephony/CTCall.h>    
4.   
5. [plain] view plaincopy  
6. -(void)detectCall    
7. {    
8. CTCallCenter *callCenter = [[CTCallCenter alloc] init];    
9. .callEventHandler=^(CTCall* call)    
10.     {    
11. if (call.callState == CTCallStateDisconnected)    
12.         {    
13. @"Call has been disconnected");    
14. self.viewController.signalStatus=YES;    
15.         }    
16. else if (call.callState == CTCallStateConnected)    
17.         {    
18. @"Call has just been connected");    
19.         }    
20.             
21. else if(call.callState == CTCallStateIncoming)    
22.         {    
23. @"Call is incoming");    
24. //self.viewController.signalStatus=NO;    
25.         }    
26.             
27. else if (call.callState ==CTCallStateDialing)    
28.         {    
29. @"call is dialing");    
30.         }    
31. else    
32.         {    
33. @"Nothing is done");    
34.         }    
35.     };    
36. }



看到了吗,其实就是改tel为telprompt.

这样,当电话结束手就可以返回到自己的应用程序。是不是很爽呢?


大家想不想在自己的应用中拨打电话呀?打电话可以用openURL:这个API, 如:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]];但是当电话结束后,返回的是系统的拨打电话界面,如何才能返回自己的应用呢?这儿有两种方法与大家分享。

 

第一种是用UIWebView加载电话,这种是合法的,可以上App Store的。

代码如下:



1. // assuming you have an ivar to store a weak reference to a UIWebView:  
2. // UIWebView *phoneCallWebView;  
3. - (void) dialPhoneNumber:(NSString *)aPhoneNumber  
4. {  
5. "tel:%@",aPhoneNumber]];  
6. if ( !phoneCallWebView ) {          
7.         phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];  
8.     }  
9.     [phoneCallWebView loadRequest:[NSURLRequest requestWithURL:phoneURL]];  
10. }  
11. - (void) dealloc  
12. {  
13. // cleanup  
14.     [phoneCallWebView release], phoneCallWebView = nil;  
15.    [super dealloc];  
16. }

 


 

第二种是私有方法,不能上App Store的。



  1. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://10086"]];  

 


如何监听电话状态



分类: iPhone系统截获 2013-12-18 16:16  680人阅读  评论(2)  收藏  举报



[objc]  view plain copy



1. [plain] view plaincopy  
2. #import <CoreTelephony/CTCallCenter.h>    
3. #import <CoreTelephony/CTCall.h>    
4.   
5. [plain] view plaincopy  
6. -(void)detectCall    
7. {    
8. CTCallCenter *callCenter = [[CTCallCenter alloc] init];    
9. .callEventHandler=^(CTCall* call)    
10.     {    
11. if (call.callState == CTCallStateDisconnected)    
12.         {    
13. @"Call has been disconnected");    
14. self.viewController.signalStatus=YES;    
15.         }    
16. else if (call.callState == CTCallStateConnected)    
17.         {    
18. @"Call has just been connected");    
19.         }    
20.             
21. else if(call.callState == CTCallStateIncoming)    
22.         {    
23. @"Call is incoming");    
24. //self.viewController.signalStatus=NO;    
25.         }    
26.             
27. else if (call.callState ==CTCallStateDialing)    
28.         {    
29. @"call is dialing");    
30.         }    
31. else    
32.         {    
33. @"Nothing is done");    
34.         }    
35.     };    
36. }



看到了吗,其实就是改tel为telprompt.

这样,当电话结束手就可以返回到自己的应用程序。是不是很爽呢?



大家想不想在自己的应用中拨打电话呀?打电话可以用openURL:这个API, 如:[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://10086"]];但是当电话结束后,返回的是系统的拨打电话界面,如何才能返回自己的应用呢?这儿有两种方法与大家分享。

 

第一种是用UIWebView加载电话,这种是合法的,可以上App Store的。

代码如下:



1. // assuming you have an ivar to store a weak reference to a UIWebView:  
2. // UIWebView *phoneCallWebView;  
3. - (void) dialPhoneNumber:(NSString *)aPhoneNumber  
4. {  
5. "tel:%@",aPhoneNumber]];  
6. if ( !phoneCallWebView ) {          
7.         phoneCallWebView = [[UIWebView alloc] initWithFrame:CGRectZero];  
8.     }  
9.     [phoneCallWebView loadRequest:[NSURLRequest requestWithURL:phoneURL]];  
10. }  
11. - (void) dealloc  
12. {  
13. // cleanup  
14.     [phoneCallWebView release], phoneCallWebView = nil;  
15.    [super dealloc];  
16. }

 


 

第二种是私有方法,不能上App Store的。



  1. [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"telprompt://10086"]];  

 


如何监听电话状态



分类: iPhone系统截获 2013-12-18 16:16  680人阅读  评论(2)  收藏  举报



[objc]  view plain copy


1. [plain] view plaincopy  
2. #import <CoreTelephony/CTCallCenter.h>    
3. #import <CoreTelephony/CTCall.h>    
4.   
5. [plain] view plaincopy  
6. -(void)detectCall    
7. {    
8. CTCallCenter *callCenter = [[CTCallCenter alloc] init];    
9. .callEventHandler=^(CTCall* call)    
10.     {    
11. if (call.callState == CTCallStateDisconnected)    
12.         {    
13. @"Call has been disconnected");    
14. self.viewController.signalStatus=YES;    
15.         }    
16. else if (call.callState == CTCallStateConnected)    
17.         {    
18. @"Call has just been connected");    
19.         }    
20.             
21. else if(call.callState == CTCallStateIncoming)    
22.         {    
23. @"Call is incoming");    
24. //self.viewController.signalStatus=NO;    
25.         }    
26.             
27. else if (call.callState ==CTCallStateDialing)    
28.         {    
29. @"call is dialing");    
30.         }    
31. else    
32.         {    
33. @"Nothing is done");    
34.         }    
35.     };    
36. }



看到了吗,其实就是改tel为telprompt.

这样,当电话结束手就可以返回到自己的应用程序。是不是很爽呢?



[objc]  view plain copy



1. [plain] view plaincopy  
2. #import <CoreTelephony/CTCallCenter.h>    
3. #import <CoreTelephony/CTCall.h>    
4.   
5. [plain] view plaincopy  
6. -(void)detectCall    
7. {    
8. CTCallCenter *callCenter = [[CTCallCenter alloc] init];    
9. .callEventHandler=^(CTCall* call)    
10.     {    
11. if (call.callState == CTCallStateDisconnected)    
12.         {    
13. @"Call has been disconnected");    
14. self.viewController.signalStatus=YES;    
15.         }    
16. else if (call.callState == CTCallStateConnected)    
17.         {    
18. @"Call has just been connected");    
19.         }    
20.             
21. else if(call.callState == CTCallStateIncoming)    
22.         {    
23. @"Call is incoming");    
24. //self.viewController.signalStatus=NO;    
25.         }    
26.             
27. else if (call.callState ==CTCallStateDialing)    
28.         {    
29. @"call is dialing");    
30.         }    
31. else    
32.         {    
33. @"Nothing is done");    
34.         }    
35.     };    
36. }