iOS判断应用内是否设置了某个的url schemes

最近有个需求,就是另外一个应用 A 需要跳转到我们的
B(已设置url schemes)内做某些操作然后再返回到 A 内,在返回的时候就需要 A 设置一个url schemes 来让 B 跳转以返回到 A 内。

但是在 A 跳转到 B 后,当 B 发现 A 没有把它自己的 url schemes传过来的时候,B 就傻眼了,B 怎么回去呢,当然iOS9之后自带的返回不用做处理,那么9以下的版本呢,这个时候在 A 跳转到 B 前,就需要判断下 A 是否设置了相应的url schemes,没设置就不让跳转。

但是问题来了,我要怎么判断 A 是不是设置了url schemes 呢?当我遇到这个问题的时候,第一反应就是去谷歌搜答案,但是这个问题不是怎么好描述,就没能搜到答案,最后还去stackoverflow提了一问,整整折腾了一下午也没能找到答案。

今天早起的时候突然想到了以前见过用代码来回去当前系统版本的搜了搜代码:

NSDictionary* infoDict =[[NSBundle mainBundle] infoDictionary];
NSString* versionNum =[infoDict objectForKey:@"CFBundleVersion"];
NSString*appName =[infoDict objectForKey:@"CFBundleDisplayName"];
NSString*text =[NSString stringWithFormat:@"%@ %@",appName,versionNum];

infoDict好像就是整个程序的配置文件取出来的字典,忍不住打印了出来。果然发现了什么

<key>CFBundleURLTypes</key>
	<array>
		<dict>
			<key>CFBundleTypeRole</key>
			<string>Editor</string>
			<key>CFBundleURLSchemes</key>
			<array>
				<string>aaa123</string>
			</array>
		</dict>
	</array>

里面有我自己在应用内设置的url schems,然后直接取出来就解决了这个问题。

这个问题的解决给了我另外的思路,在遇到一个令人无从下手的问题的时候,除了搜索还应该自己去思考一个解决方案,尽管可能很痛苦,但一定要尝试。

时间: 2024-12-20 08:51:29

iOS判断应用内是否设置了某个的url schemes的相关文章

【iOS开发必收藏】详解iOS应用程序内使用IAP/StoreKit付费、沙盒(SandBox)测试、创建测试账号流程!【2012-12-11日更新获取”产品付费数量等于0的问题”】

转的别人的 看到很多童鞋问到,为什么每次都返回数量等于0?? 其实有童鞋已经找到原因了,原因是你在 ItunesConnect 里的 “Contracts, Tax, and Banking”没有完成设置账户信息. 确定 ItunesConnect 里 “Contracts, Tax, and Banking”的状态,如下图所示,即可: 这里也是由于Himi疏忽的原因没有说明,这里先给童鞋们带来的麻烦,致以歉意. //——2012-6-25日更新iap恢复 看到很多童鞋说让Himi讲解如何恢复i

iOS:沙盒、偏好设置、归档、解归档

一.沙盒和应用程序包 •iOS应用程序只能在为该改程序创建的文件系统中读取文件,不可以去其它地方访问,此区域被称为沙盒 •iOS常用目录: –Bundle –Documents –Library/Caches –Library/Preference –tmp 显示mac隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true 隐藏mac隐藏文件:defaults write com.apple.finder AppleSh

iOS开发项目篇—54&quot;设置&quot;界面的搭建

iOS开发项目篇—54"设置"界面的搭建 一.实现 新建一个设置控制器,当点击“我”控制器导航栏“设置”按钮时,即跳转到该界面 1.在“我”控制器中对导航栏“设置按钮”的处理 1 // 2 // YYProfileViewController.m 3 // 4 5 #import "YYProfileViewController.h" 6 #import "YYCommonGroup.h" 7 #import "YYCommonItem

iOS:苹果内购实践

iOS 苹果的内购 一.介绍 苹果规定,凡是虚拟的物品(例如:QQ音乐的乐币)进行交易时,都必须走苹果的内购通道,苹果要收取大约30%的抽成,所以不允许接入第三方的支付方式(微信.支付宝等),当然开发者可以设置后门,在审核时避开审核人员.这个是有风险的,一旦发现,app会被立即下架,还是老老实实接入内购吧. 二.注意 内购接入还是比较简单的,苹果提供了专门的框架<StoreKit/StoreKit.h>,只要按照它提供的api进行开发就行.然而,接入的过程还是有需要注意的地方,分别是:漏单处理

IOS IAP APP内支付 Java服务端代码

IOS IAP APP内支付 Java服务端代码 场景:作为后台需要为app提供服务,在ios中,app内进行支付购买时需要进行二次验证. 基础:可以参考上一篇转载的博文In-App Purchase(iap)快速指南了解原理. 直接先上服务端测试通过的代码: import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.U

LeetCode:Contains Duplicate - 判断数组内是否有重复元素

1.题目名称 Contains Duplicate(判断数组内是否有重复元素) 2.题目地址 https://leetcode.com/problems/contains-duplicate/ 3.题目内容 英文:Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in

如何判断微信内置浏览器(通过User Agent实现)

在进行微信公众账号开发的时候,其中很大一块是微站点的开发,我们需要知道当前的浏览器是微信内置的浏览器,那么如何判断呢? 微信内置浏览器的 User Agent 如何判断微信内置浏览器,首先需要获取微信内置浏览器的User Agent,经过在 iPhone 上微信的浏览器的检测,它的 User Agent 是: Mozilla/5.0 (iPhone; CPU iPhone OS 6_1_3 like Mac OS X) AppleWebKit/536.26 (KHTML, like Gecko)

iOS 判断是push还是present

iOS 判断是push还是present下面这种方法判断成功了  if (self.presentingViewController)   {      [weakSelf dismissViewControllerAnimated:YES completion:nil];    }    else {       [weakSelf.navigationController popViewControllerAnimated:YES];      }

iOS开发 - 应用内打开第三方应用并传值

首先说下这个功能, 应该都有接触过. 比方,你下载了一个电子书,然后选择打开方式的时候,可能会看到你手机中已经安装的阅读类App. 或者,你的QQ收到了某个文件,你也能够选择本地的应用来打开. 那这种功能,是怎么实现的呢? 简单来说.就是调用URL来实现第三方应用的开启. 首先,被打开的应用须要提供这个功能, 也就是,它须要注冊一个 URL Schemes,供第三方使用. 假设你想你的应用被调用, 你能够这样设置. 在 xxxx info.plist 文件里, 加入例如以下属性 相似这样: 注意