不是前言的前言:做iOS这一行也有一段时间了,软件开发让我充实了自己,觉得自己能够做一些有意义的事情。当然,重要的是能挣到钱,嘿嘿,毕竟我也是有老婆孩子的人啦。走上iOS这条路,我得到了许多朋友的帮助,使得我解决了许多技术难题。做人要知恩图报不是,所以决定将自己开发过程中遇到过的问题、或者比较有意思的东西总结出来,就算帮不到大家,也值得我自己温习!
前言刚连接上服务器。。。前段时间,公司要做一个产品推广,就是在A产品里用弹窗的形式向用户推荐B产品,但是如果用户的iPhone已经安装了B产品,就不要再弹出弹窗。本文就简单地说一下如何知道用户的iPhone是不是安装了B产品,还有如何实现应用之间的跳转。废话说不少,马上开始吧!
首先我创建了名为First的工程,设置该工程的Bundle Id为com.character.pra。
接着给该工程添加一个URL Type,URL Schemes设置为FirstSchemes。identifier与Bundle Id一致。
下面这一点非常重要,请注意!iOS9之后,应用间跳转需要在Info.plsit中设置白名单。以 ‘LSApplicationQueriesSchemes’为Key值,对应数组value中添加白名单应用的URL Schemes即可。如下图(图中SecondSchemes会在下面再一次说明):
简单搭了一下界面,就一个文本Label、一个按钮Button。如下图所示:
First工程的按钮绑定的方法如下图(其中canOpenURL这个方法就能简单大方地为我们判断用户iPhone有没有安装Second工程,而且如果我们希望传递一些值给Second工程,可以将所传值拼接在url里,然后在Second工程里解析出来):
既然是两个应用之间的跳转,那就该有第二个工程,我取名为Second,设置Second项目的Bundle Id为com.character.pratice。
与First工程一样,给Second工程添加一个URL Type,URL Schemes设置为SecondSchemes,此值要在First工程以 ‘LSApplicationQueriesSchemes’为Key值,对应数组value中添加的白名单应用的URL Schemes里面体现。
搭一下Second工程界面,如下图:
在Second工程AppDelegate.m文件里添加系统方法如下(这里的url可以接收到First工程传递过来的某些值):
Second工程在启动时会执行该方法,并可能通过options传递一些值给我们,打印后发现options的值如下:
亲们,果断发现这个com.character.pra不就是First工程的Bundle Id么!!!聪明的亲们,利用这个是不是可以做一些有趣的事情呢?嘿嘿,我这里只是做了一个文本上的修改,应用之间的跳转已经实现了,当从First跳到Second时,Second界面变成了:
再从Second跳到First时,First界面变成了: