博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

iphone程序启动互相调用, 打开其他程序

Posted on 2012-04-17 16:02  BradyChen  阅读(8839)  评论(0编辑  收藏  举报
 
 在iphone程序打开其它程序(Launching Other Apps within an iPhone Application) 

你可以使用openUrl打开一些程序,不只是浏览器,我们将在下面的例子中演示这些这些应用:

 

  • 打开浏览器
  • 打开google map
  • 打开email
  • 拨号程序
  • 发短信程序
  • 打开appstore

 

Launch Google Maps

到googlemap的URL格式是:

http://maps.google.com/maps?q=${QUERY_STRING}

你可以更改QUERY_STRING改变位置信息:

 
NSString* searchQuery = @"the postion I want to know";
searchQuery =  [searchQuery stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
  NSString* urlString = [NSString stringWithFormat:@"http://maps.google.com/maps?q=%@", searchQuery];   [[UIApplication sharedApplication] openURL:[NSURL URLWithString: urlString]];
打开Apple Mail

格式:

mailto://${EMAIL_ADDRESS}

[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"mailto://info@iphonedevelopertips.com"]];

拨打电话(iPhone Only)

格式:

tel://${PHONE_NUMBER}

1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"tel://8004664411"]];

 

发短信

格式

sms:${PHONENUMBER_OR_SHORTCODE}

1
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"sms:55555"]];

 

打开app store

打开appstore的程序位置,右键点击程序图标获取url

格式如下:

http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=291586600&mt=8

 

1
2
NSURL *appStoreUrl = [NSURL URLWithString:@"http://phobos.apple.com/WebObjects/MZStore.woa/wa/viewSoftware?id=291586600&mt=8"];
[[UIApplication sharedApplication] openURL:appStoreUrl];

 

iphone程序启动互相调用

 

如何点击一个程序调用起来另一个程序的方法
调用程序A  被调用程序 B    
A中要设置一些调用的信息

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {   

 [self performSelector:@selector(launchMe) withObject:nil afterDelay:0.0];

    [window makeKeyAndVisible];
 return YES;
}


- (void)launchMe
{
 [[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"abc://"]];

}

************
其中abc是被调用程序B的bundle id 如: com.yourcompany.abc     后面的://是必定要加的格式


B中要修改plist文件的配置信息
<key>CFBundleURLTypes</key>
 <array>
  <dict>
   <key>CFBundleURLName</key>
   <string>com.yourcompany.abc</string>
   <key>CFBundleURLSchemes</key>
   <array>
    <string>abc</string>
   </array>
  </dict>
 </array>

 

如图所示  info配置截图

 

 

检测iphone是否安装有某个程序,或者打开某个程序openURL CanOpenURL

 

 


[问题描述]
1:在程序B中检测手机中是否安装A程序.
2:在程序B中打开应用程序A.

[解决办法]
步骤一:
首先在程序A的plist中添加url types
<key>CFBundleURLTypes</key>
<array>
<dict>
<key>CFBundleURLName</key>
<string>AAAAA</string>
<key>CFBundleURLSchemes</key>
<array>
<string>testA</string>
</array>
</dict>
</array>

步骤二:
在程序B中调用A程序的地方添加代码

NSURL * myURL_APP_A = [NSURL URLWithString:@"testA://AAAAA"];
if ([[UIApplication sharedApplication] canOpenURL:myURL_APP_A]) {
NSLog(@"canOpenURL");
[[UIApplication sharedApplication] openURL:myURL_APP_A];
}


 

在iPhone中,可以直接用UIApp打开URL地址。如下所示:

[ UIApp openURL: [ NSURL URLWithString:@"http://www.apple.com" ] ];
或者:

[ UIApp openURL: [ NSURL URLWithString:@"mailto:apple@mac.com?Subject=hello" ] ];

 

与此同时,iPhone还包含一些其他除了http://或者mailto:之外的URL:

sms:// 可以调用短信程序

tel:// 可以拨打电话

itms:// 可以打开MobileStore.app

audio-player-event:// 可以打开iPod

audio-player-event://?uicmd=show-purchased-playlist 可以打开iPod播放列表

video-player-event:// 可以打开iPod中的视频