iOS如何通过推送打开指定页面

简介:

众所周知推送功能已经是APP如今必不可少的一个APP功能,现在我就来介绍一下iOS如何通过推送打开指定页面。

先去 didFinishLaunchingWithOptions 方法配置消息,AppDelegate 要遵循 MPushRegisterDelegate 协议。

@interface AppDelegate () <MPushRegisterDelegate>

配置消息

MPushNotificationConfiguration *configuration = 
[[MPushNotificationConfiguration alloc] init]; 

configuration.types = MPushAuthorizationOptionsBadge | 
MPushAuthorizationOptionsSound | MPushAuthorizationOptionsAlert;

[MobPush setupNotification:configurationdelegate:self];

MobPush 新增设置方法,添加了第二个参数:delegate,将第二个参数 delegate 设为 self

+ (void)setupNotification:(MPushNotificationConfiguration
 *)configuration delegate:(id <MPushRegisterDelegate>)delegate;

然后再去处理接受到的推送消息,跳转相应的页面,这里以 Demo 为例子,点击通知跳转 web 页面,先去推送创建后台配置 url = http://m.mob.com 键值对。
1

  • iOS 8 - 9 前台收到通知 后台点击通知
// iOS 8-9 前台收到通知 后台点击通知
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
 if (application.applicationState == UIApplicationStateActive)
    { // 应用在前台
        // 最好先弹出一个 Alert,如下图片,今日头条,当你在浏览新闻,应用在前台,他就会弹出一个 Alert,告知你是否查看详情
    }
    else
    { // 应用在后台
         // 应用在后台点击通知,直接跳转 web 页面
        NSString *url = userInfo[@"url"];
        if (url)
        {
            UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
            WebViewController *webVC = [[WebViewController alloc] init];
            webVC.url = url;
            [nav pushViewController:webVC animated:YES];
        }
    }
    
    completionHandler(UIBackgroundFetchResultNewData);
}

2
 iOS 10 之后,使用 MPushRegisterDelegate 协议的方法

// iOS 10 后台点击通知
- (void)mpushNotificationCenter:(UNUserNotificationCenter *)center willPresentNotification:(UNNotification *)notification withCompletionHandler:(void (^)(NSUInteger options))completionHandler
{
 // 应用在后台点击通知,直接跳转 web 页面
    NSString *url = userInfo[@"url"];
    if (url)
    {
        UINavigationController *nav = (UINavigationController *)self.window.rootViewController;
        WebViewController *webVC = [[WebViewController alloc] init];
        webVC.url = url;
        [nav pushViewController:webVC animated:YES];
    }
}
// iOS 10 前台收到通知
- (void)mpushNotificationCenter:(UNUserNotificationCenter *)center didReceiveNotificationResponse:(UNNotificationResponse *)response withCompletionHandler:(void(^)(void))completionHandler
{
// 跟上面的一样 
}
 

以上就是我整理的比较简单的方式啦~

目录
相关文章
|
iOS开发
IOS - iOS 12 的“隐式推送”功能怎么用?
IOS - iOS 12 的“隐式推送”功能怎么用?
326 0
IOS - iOS 12 的“隐式推送”功能怎么用?
|
4月前
|
Web App开发 移动开发 Android开发
解决IOS Safari浏览器H5页面上下滑动时卡顿、页面缺失的问题
解决IOS Safari浏览器H5页面上下滑动时卡顿、页面缺失的问题
|
4月前
|
iOS开发
ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
ios中,输入框获得焦点时,页面输入框被遮盖,定位的元素位置错乱
35 1
|
9月前
|
前端开发 API Android开发
Android侧滑踩坑记(仿IOS侧滑finish页面基于Slidr库)
Android侧滑踩坑记(仿IOS侧滑finish页面基于Slidr库)
179 0
|
11月前
|
iOS开发
iOS app跳转到系统设置页面方法
iOS app跳转到系统设置页面方法
157 0
|
11月前
|
iOS开发
iOS dismiss到前两级页面
iOS dismiss到前两级页面
83 0
|
11月前
|
iOS开发
iOS WKWebView 打开页面空白URL为空问题解决办法
iOS WKWebView 打开页面空白URL为空问题解决办法
515 0
|
iOS开发
iOS开发 - 点击tabbar某一个item,直接push跳转进入需要的页面,而不是切换tab
iOS开发 - 点击tabbar某一个item,直接push跳转进入需要的页面,而不是切换tab
372 0
|
移动开发 iOS开发
H5页面在ios上经常卡住怎么办
H5页面上用了position:fixed, 在ios上滑动页面到底部,再连点几下,页面就会卡住,刚测试过
198 0
H5页面在ios上经常卡住怎么办
|
Web App开发 移动开发 前端开发
HTML5 移动端页面适配 iOS 系统刘海屏
HTML5 移动端页面适配 iOS 系统刘海屏
1071 0
HTML5 移动端页面适配 iOS 系统刘海屏