iOS跳转到“通知”(指定应用)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了iOS跳转到“通知”(指定应用)相关的知识,希望对你有一定的参考价值。

参考技术A App的通知功能有时候会被用户不小心禁止,怎样做才能方便用户在“设置”中重新开启呢?可以使用URL scheme。ios系统的“设置”有自己定义的URL scheme,通过访问这个URL就可以快速跳转到设置界面。

首先声明要使用到的URL scheme

跳转到“设置”首页

跳转到“通知”首页

跳转到自己App的“通知”

首先获取自己App的bundleIdentifer,然后拼在 prefs:root=NOTIFICATIONS_ID&path= 之后。这里要注意 NSBundle.mainBundle().bundleIdentifier 返回的是option类型,一定要转成String类型的,这样生成的url才是有效的。Option类型虽然可以直接与字符串拼合但会插入其他字符。

输出:"Optional("I am String")\n"

跳转到“设置”中其他位置

可以到 这里 查看更多可以跳转的地方,记得一定要多测试!

iOS极光推送跳转到指定页面

首先要初始化sdk,官方文档上有

 

[JPUSHService registerForRemoteNotificationTypes:(UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)  categories:nil];

 

    [JPUSHService setupWithOption:launchOptions appKey:@"" channel:@"Publish channel" apsForProduction:NO];

 

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(5.0f * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

 

    //alias需要看自己的实际情况赋值

        [JPUSHService setTags:nil alias:nil fetchCompletionHandle:^(int iResCode, NSSet *iTags, NSString *iAlias) {            

 

        }];

 

    });

 

 

 

APPDelegate中加入方法

- (void)application:(UIApplication *)application

didReceiveRemoteNotification:(NSDictionary *)userInfo

fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {

    [JPUSHService handleRemoteNotification:userInfo];

    NSLog(@"userInfo%@",userInfo);

    completionHandler(UIBackgroundFetchResultNewData);

    if (application.applicationState == UIApplicationStateActive) {

       //这里写APP正在运行时,推送过来消息的处理

        

    } else if (application.applicationState == UIApplicationStateInactive ) {

//APP在后台运行,推送过来消息的处理

        [self goToMssageViewControllerWith:userInfo];

 

    } else if (application.applicationState == UIApplicationStateBackground) {

//APP没有运行,推送过来消息的处理

        [self goToMssageViewControllerWith:userInfo];

    }

}

//跳转方法

- (void)goToMssageViewControllerWith:(NSDictionary*)msgDic{

    //将字段存入本地,在要跳转的页面用它来判断

    NSUserDefaults*pushJudge = [NSUserDefaults standardUserDefaults];

    [pushJudge setObject:@"push"forKey:@"push"];

    [pushJudge synchronize];

    if ([msgDic[@"type"]isEqualToString:@"Notification_cabinet"]) {

  //这里写要跳转的controller

    UserOrderListViewController * VC = [[UserOrderListViewController alloc]init];

    UINavigationController * Nav = [[UINavigationController alloc]initWithRootViewController:VC];

    [self.window.rootViewController presentViewController:Navanimated:YES completion:nil];

    } else if ([msgDic[@"type"]isEqualToString:@"Message_notice"]) {

        RecommendViewController *vc = [[RecommendViewController alloc] init];

        UINavigationController * Nav = [[UINavigationController alloc]initWithRootViewController:vc];

        [self.window.rootViewControllerpresentViewController:Nav animated:YES completion:nil];

        

    } 

}

在要跳转的页面中的ViewDidLoad方法中加入

 NSUserDefaults*pushJudge = [NSUserDefaults standardUserDefaults];

    if([[pushJudgeobjectForKey:@"push"]isEqualToString:@"push"]) {

        [self.navigationController setNavigationBarHidden:NOanimated:YES];

        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@""]style:UIBarButtonItemStylePlain target:selfaction:@selector(rebackToRootViewAction)];

    }

具体情况根据自己的APP需要进行修改

以上是关于iOS跳转到“通知”(指定应用)的主要内容,如果未能解决你的问题,请参考以下文章

iOS极光推送设置别名

怎样做点击推送消息,跳转到指定页面

Android jetpack Navigation deepLink 创建通知并通过PendingIntent跳转到指定页面的Framgent

iOS跳转到QQ群或指定QQ客服页面

Android 跳转至第三方应用指定的Activity

iOS极光推送跳转到指定页面