美文网首页iOS开发整理iOS进阶iOS
不启动应用,url scheme以及推送跳转指定页面

不启动应用,url scheme以及推送跳转指定页面

作者: 翻炒吧蛋滚饭 | 来源:发表于2016-06-28 18:01 被阅读1422次

    通常情况

    1、推送

    推送过来的消息,点击后都是要跳到指定的页面的,比如我是一款社交软件,我获得了一个新粉丝,应用在后台的情况下,点击消息,会跳转到指定的页面,比如“我的粉丝”页面。这时,我们会在AppDelegate里的如下方法,处理推送过来的消息

    - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
    

    2、Url Scheme

    还有H5页面,比如我用Safari打开了一款App的Web版,可能这个页面就会有一个,Banner,上面有一个“打开XXApp”的按钮,假设我这个Web页面是一款商品的详情页,那我点击“打开XXApp”后,就会打开这款App,并跳转到这款商品的详情页。具体是通过url scheme实现的,以我们公司的App为例

    com.gc.iosApp://?params={"des":"foodview","skuid":"248"}
    

    com.gc.iosApp为App的跳转链接,params后为Json格式的附带参数,用来跳转到指定页面,拦截这个字符串的方法为AppDelegate中的如下方法

    - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
        // url query返回的字符串为params={"des":"foodview","skuid":"248"}
        NSString *str = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    }
    

    关闭App的情况

    但实际上,我们在完全退出App的情况下,比如双击home后,把App关掉,这种情况下,无论是点击推送消息还是点击h5上的url scheme跳转,上面提到的两个跳转方法,都是不执行的,所以这时我们就要在以下方法做处理了。

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

    当App未启动时,点击推送消息或者点击h5上的url scheme,就会执行以上方法,而跳转信息都是保存在参数launchOptions中。

    // 取到推送信息
    NSDictionary *remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
    
    // 取到url scheme跳转信息
    NSURL *url = [launchOptions objectForKey:UIApplicationLaunchOptionsURLKey];
    

    获取到相关跳转信息后,就可以跳转到具体页面了,也就解决了未启动App时无法跳转详情页面的问题。

    相关文章

      网友评论

        本文标题:不启动应用,url scheme以及推送跳转指定页面

        本文链接:https://www.haomeiwen.com/subject/fcmtjttx.html