handleopenurl 不调用这个方法,怎么使用

一、首先我们创建两个用于测试的App项目 (我这里以App0-A 和 App-B 为例)
二、打开工程,设置工程的InfoPlist:添加URL Types
  给你的App设置一个URL Schemes(明明以你的App或者工程名来命名) 这样就能让其它应用识别得到App
  ps:我们这里用App_B 去 handle 我们的App_A,故我们App_A就要设置URL Schemes
三、在App_B中,设置一个按钮,实现点击后handle出我们的App_A
- (void)viewDidLoad {
[super viewDidLoad];
UIButton *App_B_Button = [UIButton buttonWithType:UIButtonTypeCustom];
App_B_Button.frame = CGRectMake(100, 100, 100, 50);
App_B_Button.backgroundColor = [UIColor purpleColor];
[App_B_Button setTitle:@"App_B" forState:UIControlStateNormal];
[App_B_Button addTarget:self action:@selector(app_B:) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:App_B_Button];
-(void)app_B:(UIButton *)buttonB
NSURL *url = [NSURL URLWithString:@"appA://"];
[[UIApplication sharedApplication] openURL:url];
点击按钮后:
这样就能实现App之间的跳转的功能了。
注意:打开应用App-A的过程中,App-A有两种状态。
第一种状态:App_A并没有启动,那么会启动App_A。并调用下面的方法。
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
return YES;
第二种状态:此时B已经启动了,但是在后台运行,这个时候不会调用该方法
四、若想实现App跳转的同时进行传值,只需实现application的代理方法
//当应用程序被其他程序打开的时候会调用这个方法,在该方法中可以实现两个应用程序间的数据局传递//通过这个代理方法可以拦截url
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
NSString *urlStr = [url absoluteString];
if ([urlStr hasPrefix:@"AppA://"]) {
urlStr = [urlStr stringByReplacingOccurrencesOfString:@"AppA://" withString:@""];//参数就在url,传值也在里面
return NO;
阅读(...) 评论()应用之间调用 UIApplication类的OpenURL方法
应用之间调用 UIApplication类的OpenURL方法
[摘要:1、 UIApplication 类的 OpenURL 方式 1、挪用app store界里方式 正在现实开辟中,每每要推举本身其他运用战推举本身的免费硬件,那末我们便须要正在顺序中间接毗邻到 app store 的响应页里。 真]
一、类的方法1、调用app store界面方法在实际开发中,往往要推荐自己其他应用和推荐自己的收费软件,那么我们就需要在程序中直接连接到app store的相应页面。实际上的做法很简单,使用的还是UIApplication类的OpenURL方法:&[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"程序的相应连接"]];2、调用其它应用的方法// 调用 自带mail[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@"mailto://"]];// 调用 电话phone[[UIApplication sharedApplication] openURL:[NSURLURLWithString:@"tel://"]];// 调用 SMS[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"sms://800888"]];// 调用自带 浏览器 safari[[UIApplicationsharedApplication] openURL:[NSURLURLWithString:@""]];// 调用 Remote[[UIApplicationsharedApplication] openURL:[NSURL URLWithString:@"remote://fff"]];调用phone可以传递号码,调用SMS只能设定号码,不能初始化SMS内容。二、应用程序间通信1、调在plist文件中,注册对外接口找到appname-info.plist文件,点击打开它,在列表中找到URL types(如果没有,可添加一个URL types )里面的内容设置看下图:&关键Key和Value是&URL identifier =& com.zilanxing.andpush;URL Schemes =& andpush到此对外接口已注册好2、调用上面的接口通信注册url地址:andpush:///access/register?code=zOdSpC8ZXv// 通过iOS浏览器打开应用程序注册应用
// andpush用户注册,当用户邮箱收到邀请链接,直接点击下面链接就可以打开andpush应用程序的注册页面&a href="andpush:///access/register?code=zOdSpC8ZXv"&andpush:///access/register?code=zOdSpC8ZXv&/a&// 通过其它App应用打开andpush应用程序的注册页面[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"andpush:///access/register?code=zOdSpC8ZXv"]];3、 andpush 响就注册页面的请求在AndPush应用的AppDelegate.m文件中添加如下代码:
- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { & & if (!url) { & & & & return NO; & & }& &&NSLog(@"handleOpenURL: %@", [url absoluteString]); & &&// 在host等于时,说明是注册请求 & & if ([[url host] isEqualToString:@""]) { & & & &&// 请求的url地址: andpush:///access/register?code=zOdSpC8ZXv & & & & // 获取注册邀请码 code & & & & NSString *code = [[url query] substringFromIndex:[[url query] rangeOfString:@"code="].location+5]; & & & & NSLog(@"code: %@", code); & & & &&// 使用本地 ViewController 来注册 & & & & UserRegisterViewController *viewController = [[[UserRegisterViewController alloc] init] autorelease]; & & & & viewController.title = @"注册"; & & & & viewController.code = & & & &&//从底部显示视图 & & & & UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController]; & & & & navigationController.title = @"注册"; & & & & [self.tabBarController presentModalViewController:navigationController animated:TRUE]; & & & & [navigationController release]; & & & &&// [self.navigationController pushViewController:controller animated:YES]; & & & & // [controller release]; & & & & return YES; & & } else { & & & & return NO; & & } }到此搞定,以后再完善。其它参考:/newbie/tutorial/02.html/page/M0/S753/753470.html/bbs/simple/?t58388.html
感谢关注 Ithao123iOS频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊handleOpenURL
Shared Interapp Communication!
Expose your app's capabilities and leverage the power of cooperation on iOS
Recently added URL schemes:
shtp,shtps,shc
Office lens
launch-OfficeLens
Office lens
office-lens://myparam
Star Map 3D+
AddressBook GPS
Every day, there&s more than& apps submitted to the Apple iOS App Store. Some of these apps are made by developers like ourselves, trying to open up the many possibilities of the iPhone OS platform to others and ourselves. By sharing our app&s capabilities and using the capabilities of the apps made by other developers we can increase the usability of the platform. And we might learn something in the process.
offers a centralized platform for developers to read and write about others& and their own apps.
We've found quite some URL schemes at &and some more on &handleOpenUrl 这个方法,怎么使用_百度知道
handleOpenUrl 这个方法,怎么使用
提问者采纳
用&?xml version=&1.0& encoding=&UTF-8&?&&!DOCTYPE plist PUBLIC &-//Apple//DTD PLIST 1.0//EN& &&&&plist version=&1.0&&&array&
&key&哗旦糕秆蕹飞革时宫江CFBundleURLName&/key&
&string&&/string&
&key&CFBundleURLSchemes&/key&
&string&schemes&/string&
&/dict&&/array&&/plist&返回的时候程序调用把上面这段加到info.plist里面,你在ip的safari上输入schemes://就会自动跳转到程序并执行delegate
其他类似问题
为您推荐:
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁ios应用接入微信开放平台
前几天试了一下服务端接入微信公众平台,昨天又看了一下APP接入开放平台
开放平台和公众平台的区别
公众平台针对的是公众账号,除了提供管理后台之外,也开放了若干接口,让微信服务器和开发者自己的应用能够对接
开放平台是微信的整体接入方式,不局限于公众账号(订阅号,服务号),移动APP和web应用也可以通过开放平台,实现与微信对接。可以说,公众平台的API部分,是开放平台的一个子集
开放平台大体上分为3个部分,分别针对移动APP,WEB应用,公众账号的接入
移动APP接入开放平台的作用
目前,移动APP接入微信开放平台后,可以获得以下的特性:
1、向微信好友发消息
2、发消息到朋友圈
3、收藏内容到“我的收藏”
4、用微信账号登陆APP,获得微信账号的信息
5、支持微信支付
在朋友圈可以看到一个消息后面跟着“来自XXX”,这就是XXX应用接入开放平台后得到的能力
ios app接入方式
流程和代码都不复杂,具体方法请看开放平台官网,本文不赘述。只提醒一点,需要在xcode里配置你自己APP的URL Type,URL Schemas需要填写微信开放平台提供的那个app id。如果漏掉了这一步,一样可以发消息到微信,但是发完消息以后就无法从微信再跳转回你的APP了,因为微信客户端也是通过openURL方法,跳回你的APP,需要你的APP自己注册上URL Schemas
对接微信的原理
首先,一个大的限制是,APP不可能通过微信提供的SDK,直接把消息发到微信服务器上。而是从开发者的APP中,打开微信应用,然后还是由微信把消息发出去,再跳回开发者自己的APP。也就是说,APP和微信的交互,是通过应用间跳转来完成的,所以核心还是iOS的这2个方法:
- (BOOL)openURL:(NSURL*)
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
发送消息的代码是:
[WXApi sendReq:req];
微信SDK当然不是开源的,所以从这行代码我们看不出什么。但是很容易想到,跳转到另一个app的方式在iOS中就是openURL方法,所以这行代码做的事情,类似于:
NSString *weixinURL = @"weixin_schema://app_id?title=xxx&content=xxx";
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:weixinURL]];
通过weixin_schema,打开了机器上安装的微信应用;在URL末尾添加了相关参数,微信解析后处理。然后在微信里把消息发出去以后,微信也会调用openURL,又回到了开发者自己的APP:
URL地址是,wx_xxxxxxxxxxx://platformId=wechat
这个URL被AppDelegate中的这个方法拦截:
- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation
return [WXApi handleOpenURL:url delegate:self];
然后handleOpenURL方法调用了:
-(void) onResp:(BaseResp*)resp
NSString *strTitle = [NSString stringWithFormat:@"发送消息结果"];
NSString *strMsg = [NSString stringWithFormat:@"errcode: %d", resp.errCode];
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:strTitle message:strMsg delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
整个交互的原理就是这样。具体到对接的代码里,主要是2个流程:
1、应用主动发消息给微信。应用调用sendReq方法,然后在onResp方法里处理微信的响应
2、微信发消息给应用。应用在onReq里处理微信的请求,然后调用sendResp方法发响应到微信
然后这2个流程里用到的参数,都是微信SDK里提供的封装类,如SendMessageToWXReq,WXMediaMessage等
对接微信的限制
如上所述,由于SDK并没有提供应用直接发送请求到微信服务器的能力,而只能带参数跳转到微信APP,所以接入的限制还是比较大的,很多事情都做不了。
比如说,用户的设备上一定要装有微信,而且已经处于登陆状态。因此很多for iPad的APP,就很难对接微信。因为会在iPad上安装微信的用户是很少的,一般都是装在手机上
还有,也无法实现在自己的APP里选定用户发送,只能是编辑好内容,跳到微信里,在微信通讯录里选要发送的好友
也不能根据手机号,直接向微信账号发送申请加为好友的请求
尽管如此,对接微信之后,对APP的社交传播还是有较大的价值,所以现在可以看到大部分的APP,都有接入微信的功能
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'

我要回帖

更多关于 handle使用 的文章

 

随机推荐