首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在App不运行(即完全被杀)的情况下,打开用户点击推送通知时的特定控制器Objective-C

在App不运行的情况下,打开用户点击推送通知时的特定控制器,可以通过以下步骤实现:

  1. 配置推送通知:在App启动时,注册远程推送通知,并获取设备的推送令牌。将推送令牌发送给服务器,以便服务器能够向设备发送推送通知。
  2. 处理推送通知:当用户收到推送通知并点击时,系统会调用App的AppDelegate类中的application:didReceiveRemoteNotification:fetchCompletionHandler:方法。在该方法中,可以获取到推送通知的相关信息。
  3. 解析推送通知:在application:didReceiveRemoteNotification:fetchCompletionHandler:方法中,可以解析推送通知的内容。通常,推送通知会包含一些自定义的键值对,用于标识需要打开的特定控制器。
  4. 打开特定控制器:根据解析到的推送通知内容,可以使用Objective-C代码来打开特定的控制器。可以通过导航控制器或模态视图控制器的方式进行页面跳转。

以下是一个示例代码,用于在App不运行的情况下打开特定控制器:

代码语言:txt
复制
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // 注册远程推送通知
    [self registerForRemoteNotifications];
    
    // 判断是否通过推送通知启动App
    NSDictionary *notificationInfo = launchOptions[UIApplicationLaunchOptionsRemoteNotificationKey];
    if (notificationInfo) {
        // 解析推送通知内容
        NSString *controllerName = notificationInfo[@"controller"];
        
        // 打开特定控制器
        if ([controllerName isEqualToString:@"ViewController1"]) {
            ViewController1 *viewController1 = [[ViewController1 alloc] init];
            UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
            [navigationController pushViewController:viewController1 animated:YES];
        } else if ([controllerName isEqualToString:@"ViewController2"]) {
            ViewController2 *viewController2 = [[ViewController2 alloc] init];
            UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
            [navigationController pushViewController:viewController2 animated:YES];
        }
    }
    
    return YES;
}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
    // 解析推送通知内容
    NSString *controllerName = userInfo[@"controller"];
    
    // 打开特定控制器
    if ([controllerName isEqualToString:@"ViewController1"]) {
        ViewController1 *viewController1 = [[ViewController1 alloc] init];
        UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
        [navigationController pushViewController:viewController1 animated:YES];
    } else if ([controllerName isEqualToString:@"ViewController2"]) {
        ViewController2 *viewController2 = [[ViewController2 alloc] init];
        UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController;
        [navigationController pushViewController:viewController2 animated:YES];
    }
    
    completionHandler(UIBackgroundFetchResultNewData);
}

在上述代码中,ViewController1ViewController2是特定的控制器类名,根据推送通知中的内容进行判断和打开。需要注意的是,为了能够正确地打开特定控制器,需要在App的其他地方定义和实现这些控制器类。

此外,根据具体的需求,可以使用腾讯云的相关产品来增强推送通知的功能和性能,例如:

  • 腾讯移动推送:提供全面的移动推送解决方案,支持个性化推送、消息推送、静默推送等功能。
  • 腾讯云函数(SCF):通过编写函数代码,可以实现推送通知的处理逻辑,并与其他腾讯云产品进行集成。
  • 腾讯云消息队列(CMQ):用于异步处理推送通知,提高系统的可靠性和可伸缩性。

以上是一个基本的实现思路和示例代码,具体的实现方式和产品选择可以根据实际需求进行调整。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Android 功耗(12)---省电续航-相互唤醒

怪不得雷布斯之前说国内应用市场环境太乱了,很多情况下用户都把耗电归结于Android系统就是比IOS不给力、电池low、这个ODM厂商系统真耗电。...相互唤醒带来危害 01同时启动家族内所有APP动作,会因后台启动数量过多,带来短暂造成系统卡顿; 02过多且非用户主动打开后台应用,对系统内存和续航能力都是一种流氓慢性蚕食。...03用户通知栏更是变成各种商业博弈,个别后台推送消息还调用提示音进行广告提示,巴不得用户24小使用。其实任何图形和声音调用都是需要费电。...相互唤醒启动方式 方式一: 系统广播(开机、解锁)->启动推送服务pushService,第三方APP永远不被杀SDK技术->将所有注册相同推送服务家族系APP执行后 台启动; 方式二: 通过...,第三方APP永远不被杀SDK技术->将所有注册相同推送服务家族系APP执行后台启动; 方式四: 伪装Activity或前台进程启动app->启动推送服务pushService,第三方APP永远不被杀

97630

再谈Android客户端进程保活

3,服务进程 在内存不足以维持所有前台进程和可见进程同时运行情况下,服务进程会被杀死。...空进程 某个进程包含任何活跃组件该进程就会被置为空进程,完全没用,杀了它只有好处没坏处,第一个干它。 内存阈值 上面主要讲的是进程,那么进程是怎么被杀呢?这不得不提主要一个原因:内存。...在移动设备中内存往往是有限打开应用越多,后台缓存进程也越多。在系统内存不足情况下,系统开始依据自身一套进程回收机制来判断要kill掉哪些进程。...缓存进程,空进程,在内存不足情况下就会优先被kill CACHED_APP_MIN_ADJ 9 缓存进程,也就是空进程 SERVICE_B_ADJ 8 活跃进程 PREVIOUS_APP_ADJ...自身跟服务器通过轮询,或者长连接; GCMGoogle Cloud Messaging,主要用于消息推送,即使在应用没有起来情况下,客户端也能通过GCM收到来自服务器消息。

3.7K71

Android消息推送:第三方消息推送平台详细解析

(开发成本和后台管理、统计成本) 消息到达率高 如果一个手机里有多个App使用了同一家推送服务,那么这些App将共用一条消息通道,即使你家App推送服务被杀死了,那么只要用户打开了其他集成该推送服务...当今市场上Android手机系统份额最高是MIUI系统,小米(具体排名请看http://www.umindex.com/) 因为:免费、到达率高且在Android系统市场份额第一MIUI系统上不被杀死...有一天你App被杀死了,但这时用户启动了今日头条,那么推送系统也就会通过共享推送通道顺便把你推送消息送达到手机上,然后还可能把你进程也唤醒(被“保活”了)。...通知栏消息:该类消息在被送达用户设备后,直接以系统通知形式展示给用户 不会继续被传递到App 透传消息:该类消息在被送达用户设备后,还会继续传递到App 通过回调App某个BroadcastReceiver...App如果仅仅通过通知栏消息,是无法接触到消息数据本身。 可自定义通知提醒样式(包括提示样式、提示形式声音等等) 所以大家可以根据不同使用场景来对推送消息类别进行选择了。 ---- 6.

9.6K60

iOS 本地推送概念步骤:属性:点击通知跳到指定控制器界面快捷回复功能(iOS 8以后可用), category 属性使用方法

(说明新内容数量) 播放音效(提醒作用) 2.用户也可以决定是否要开启以下4个功能: 显示App图标数字 播放音效 锁屏显示 显示在“通知中心” 3、注意: 发送推送通知,如果程序正在前台执行,那么推送通知就不会被呈现出来...,但是微信在前台时候也能推送消息,方法是:创建一个view,仿造系统消息通知样式向下出现,点击后回到根控制器再进行跳转(注意压栈) 点击通知打开通知app 不管程序打开还是关闭,推送都能如期发出..., nonatomic,copy) NSString *alertTitle NS_AVAILABLE_IOS(8_2); 12、设置通知推送携带参数,一般用于点击通知打开指定控制器页面 @property...(nullable, nonatomic,copy) NSDictionary *userInfo; 例子: 发送通知,带一个索引2参数,点击通知打开程序后自动跳到第三个控制器(TabBarController...案例结构,tabBarController索引分别为0 1 2 1、接收到本地通知后调用(AppDelegate中),该方法只有程序前台或后台时候才有用,退出无法接收到消息无法跳转,如需要在程序退出推送通知

2.5K60

Android应用保活全攻略:30个实用技巧助你突破后台限制

在Android系统中,保活(保持应用进程一直存活)就是为了让应用在后台持续运行,来实现某些特定功能,如实时消息推送、定位服务等。...前台服务(Foreground Service) 将应用Service设置为前台服务,这样系统会认为这个服务是用户关心,不容易被杀死。前台服务需要显示一个通知,告知用户当前服务正在运行。...当触发条件满足,JobScheduler会启动应用。 5. 白名单 引导用户将应用加入系统白名单,省电白名单、自启动白名单等。加入白名单应用不会受到系统限制,可以在后台持续运行。 6....与用户建立信任,告知用户应用在后台运行原因和目的。在用户授权情况下,采取适当保活策略,以实现所需功能。 21....当收到新通知,检查应用进程是否存活,如果已经被杀死,则重新启动应用。这种方法可以利用系统通知变化来触发应用启动,从而提高应用在后台存活率。

10120

应用保活终极总结(二):Android6.0及以上保活实践(进程防杀篇)

虽然APP常驻内存对于用户来说比较”恶心”,但是在诸如IM和消息推送这类场景来说,APP常驻内存却尤其重要。 APP常驻内存(保活防杀),旧事重提,距离上一次研究亦有半年有余。...为了达到与"咕咚"等APP类似效果,我们模拟这么一种场景:当用户登录测试APP后,先不开启保活功能;当用户开始跑步,开启保活功能,然后再在这基础上做黑屏运行、一键清理、强制停止等功能测试。...9、APP进程防杀方案第三阶:循环播放一段无声音频,"打造金刚不坏之身" 对于三星C9、Note4和华为4X来说,结合前台Service和悬浮界面(1像素)保活方式,在用户主动清理或强杀情况下,测试...好吧,纠结这么多,这里只是从学技术角度出发而研究,毕竟用户对耗电量还是很敏感,不到万不得已还是收敛点,不要这么"风骚",用户体验很重要,一不小心就"泻"了你。...注:Mate8循环播放一段无声音频,当用户点击一键清理最近应用时,KeepAppAlive不会被干掉,但是如果用户只选择清理KeepAppAlive,也会被杀死,这与"咕咚"保活效果一致。

4K21

React Native推送通知:完整操作指南

在这篇文章中,我们将看到如何在React Native应用中创建和发送推送通知。 什么是推送通知推送通知是从应用程序发送到已安装该应用用户消息或警报。...主要有两种类型通知: 前台通知:当应用程序正在打开运行时发送给用户通知 后台通知:无论应用程序是否当前打开,都会发送 推送通知在移动应用开发世界中非常流行,原因有很多。...例如: 使公司能够以较低成本推广产品和优惠 提升整体用户体验 可以更快地提供交易收据 转化更多用户 可靠,因为用户打开手机时总是会收到离线消息 这些优势使得推送通知对几乎所有类型移动应用都非常有用...这里有一个图表,简化了通知服务如何与设备进行通信: 当涉及到在React Native中设置推送通知,有几种设置方式: 原生平台特定通知服务(FCM/APNS) Expo推送通知服务和其他云服务 像...在 React Native 中处理接收到通知 要处理接收到通知,我们首先需要有一个事件监听器,每当用户点击通知都会被调用。

90810

iOS开发--本地通知与远程通知

App内容更新,推送一些相关消息,让用户知道App内部发生了什么事情。...设置音效,(提醒作用) 2.设置横幅, 3.设置弹窗, 4.锁屏下也可以呈现, 5.App图标的数字 (新内容数量) 至于显示横幅或者弹窗,取决于用户设置 iOS手机设置中:通知中心-...Paste_Image.png 通知注意点 1、App在前台运行时候,通知不会展示出来 2、点击通知,默认会自动打开推送通知App 3、不管App是否打开通知都可以如期发出 1、本地推送通知...,如果用户打开通知,可以让用户进入一些特定界面 /* 应用程序在进入前台,或者在前台时候都会执行该方法 */ - (void)application:(UIApplication *)application...deviceToken给公司服务器 4、监听用户通知点击 如何调试远程推送功能 1、真机 2、调试推送需要证书文件 证书自己配置。。。

3.2K20

IMSDK离线推送

一、概述 云通信 IM 终端用户需要随时都能够得知最新消息,而由于安卓手机使用深度定制 Android 系统,对于第三方 App 自启动权限管理很严格,默认情况下第三方 App 都不会在系统自启动白名单内...image.png 4、厂商推送 这时候可以在华为官方离线推送控制台对这个token发送一条消息,终端app在杀掉进程情况下,会弹出通知栏显示这条离线消息。...2、pushoffline状态:当终端是online状态,进程在手机后台被杀死,云通信后台会更新用户状态是pushoffline;或者当手机持续断网6分钟左右,云通信后台一直没有收到app心跳包,也会把用户状态更新成...②、苹果官网证书过期、密码错误等原因,未知错误可以先重新申请一个证书再运行看看 3、安卓点击通知栏,可以跳转到指定页面吗 答:暂时还不支持,只能按系统标准打开应用。...6、通知栏刷出了离线消息,点击打开app,进入到会话页面,怎么获取到这个离线消息呢 答、离线状态,新消息不会触发onNewmessage接口,进入会话页面,通过拉取漫游消息拉取到这条离线消息。

6K151

Android推送群魔乱舞

通知栏消息:在设备接收到消息之后,由系统弹出标准安卓通知用户点击通知栏才激活应用,这种场景,APP无需存活(活着也不受影响),离线场景下,只有通知栏消息这一条路。...image 对于在线透传消息,由于是在APP存活情况下收到APP端可以统计到所有必要信息,无论是推送达时间、推送内容还是通知点击都能统计到;但是离线推送就没那么幸运,很多信息APP自己是拿不到...这种情况下通知展示属于系统行为,APP压根无法感知,更无从统计。不过,各三方推送服务平台扔提供了推送到达统计能力,采用三方推送平台回执,以上面的华为推送模型为例: ?...,小米有两大类点击行为: 完全自定义点击行为 在这种行为下,开发者可以拦截通知点击事件,自定义如何处理后续事件,点击后,MiPushMessage通过PushMessageReceiver继承类onNotificationMessageClicked...华为 流程同小米类似,按文档即可,预定义行为有如下四种: 1:用户定义Uri,打开目标界面 2:点击打开特定网页 3:点击打开应用 4:点击打开富媒体信息 一般选择自定义Uri行为,所有数据通过intent

1.7K20

ios入门之消息推送

本地推送 不需要服务器支持(无需联网)就能发出推送通知app本地创建通知,加入到系统Schedule里,如果触发器条件达成时会推送相应消息内容,如常见定时任务闹钟等。 ?...= YES; //设置通过点击通知打开APP时候启动图片(无论字符串设置成什么内容,都是显示应用程序启动图片) localNote.alertLaunchImage = @"111...当用户点击本地推送通知时候,会自动打开app,这里有2种情况:app在后台运行,或者被系统进程杀死,对于这两种情况,我们怎么处理呢? app后台运行 ?...对于app被杀情况,要先启动app,启动完毕会调用AppDelegate方法。 需要特别注意是:在iOS8.0以后本地通知有了一些变化,如果要使用本地通知,需要得到用户许可。...launchOptions设置 if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) { // 当被杀死状态收到本地通知执行跳转代码

1.9K60

IMSDK华为离线推送快速集成

一、简介 即时通信 IM 终端用户需要随时都能够得知最新消息,而由于移动端设备性能与电量有限,当 App 处于后台,为了避免维持长连接而导致过多资源消耗,即时通信 IM 推荐您使用各厂商提供系统级推送通道来进行消息通知...本篇主要介绍:在tuikit上如何快速跑通华为离线推送,实现如下功能点,顺便记录一下,在集成过程中,容易踩到坑点 1、退后台/杀进程,接收离线消息 2、离线消息透传ext字段 3、通知点击打开应用内界面...//APP 检测到应用退后台可以调用此接口,可以用作桌面应用角标的初始化未读数量。 //从5.0.1版本开始,如果配置了离线推送,会收到厂商离线推送通道下发通知栏消息。...步骤2:接收端获取自定义内容 若 添加证书 设置【点击通知后】操作为【打开应用】或【打开应用内指定界面】,当点击通知消息,客户端可以在相应 Activity 中获取自定义内容,可以参考 OfflineMessageDispatcher.java...//当sdk版本大于等于5.0,默认退后台触发在线消息自定义通知栏。

2K40

IMSDK华为离线推送快速集成

一、简介 即时通信 IM 终端用户需要随时都能够得知最新消息,而由于移动端设备性能与电量有限,当 App 处于后台,为了避免维持长连接而导致过多资源消耗,即时通信 IM 推荐您使用各厂商提供系统级推送通道来进行消息通知...//APP 检测到应用退后台可以调用此接口,可以用作桌面应用角标的初始化未读数量。 //从5.0.1版本开始,如果配置了离线推送,会收到厂商离线推送通道下发通知栏消息。...步骤2:接收端获取自定义内容 若 添加证书 设置【点击通知后】操作为【打开应用】或【打开应用内指定界面】,当点击通知消息,客户端可以在相应 Activity 中获取自定义内容,可以参考 OfflineMessageDispatcher.java...//当sdk版本大于等于5.0,默认退后台触发在线消息自定义通知栏。...6、由于华为推送兼容性问题,自定义ext字段,只能在部分 EUI10+ 设备上收到 7、进程被杀,厂商推送离线消息到来,弹出通知栏行为、弹出顶部横幅行为、通知栏样式、震动、提示音、角标增加,都是系统行为

4K40

IMSDK华为离线推送快速调试

一、简介 即时通信 IM 终端用户需要随时都能够得知最新消息,而由于移动端设备性能与电量有限,当 App 处于后台,为了避免维持长连接而导致过多资源消耗,即时通信 IM 推荐您使用各厂商提供系统级推送通道来进行消息通知...//APP 检测到应用退后台可以调用此接口,可以用作桌面应用角标的初始化未读数量。 //从5.0.1版本开始,如果配置了离线推送,会收到厂商离线推送通道下发通知栏消息。...步骤2:接收端获取自定义内容 若 添加证书 设置【点击通知后】操作为【打开应用】或【打开应用内指定界面】,当点击通知消息,客户端可以在相应 Activity 中获取自定义内容,可以参考 OfflineMessageDispatcher.java...//当sdk版本大于等于5.0,默认退后台触发在线消息自定义通知栏。...4、指纹证书不对,运行到申请token,会报错6003 5、手机硬件token是固定,如果您app事先已经集成了极光推送等其他pushsdk,已经申请到了token,可以直接把token交给imsdk

2.1K90

Android开发高级进阶——Service与Notification

众所周知,Service是Android中实现程序后台运行解决方案,非常适合于执行不需要和用户交互而且要求长期运行任务。...RemoteService:远程进程Service,是一个独立进程,当主进程被杀,其服务依然会运行,比较灵活,但使用复杂。...应该始终定义一个当用户点击通知时会触发操作;通常,此操作会在应用中打开Activity。也可以向通知添加按钮来执行其他操作,例如,暂停闹铃或立即答复短信。...例如,如果要在用户点击抽屉式通知栏中通知文本启动Activity,则可通过调用setContentIntent()来添加PendingIntent。...创建简单通知 以下代码段说明了一个指定某项 Activity 在用户点击通知打开简单通知

1.6K40

iOS Push详述,了解一下?

离线push是需要经过苹果APNs服务器才可以推送到某台设备某个APP,这是和本地push本质区别。push与设置中是否打开通知”有关。...本地推送是由App自己设定,并且发送给安装此App这台设备,属于一对一对应关系。比较典型应用是闹钟类似的场景。该push与设置中是否打开通知”有关。...: [10.png] 消息数 三、处理本地push ( iOS10以前) --------------------- 1、 App没有启动情况下处理本地push 这种情况下,当点击通知,会启动...[11.png] 2、App运行在后台及前台 上面的2种情况处理基本一致, 不同点只有当运行再后台时候,会有弹窗提示用户另外一个App通知,对于本地通知处理都是通过AppDelegate方法...,服务器无法主动和用户交互(推送实时消息等),所以苹果推出了 APNs,允许设备和服务器分别与苹果推送通知服务器保持长连接状态。

4.4K60

iOS Push技术

离线push是需要经过苹果APNs服务器才可以推送到某台设备某个APP,这是和本地push本质区别。push与设置中是否打开通知”有关。...本地推送是由App自己设定,并且发送给安装此App这台设备,属于一对一对应关系。比较典型应用是闹钟类似的场景。该push与设置中是否打开通知”有关。...push 这种情况下,当点击通知,会启动App,而在App中,开发人员可以通过实现AppDelegate中方法:- (BOOL)application:UIApplication)application...2)App运行在后台及前台 上面的2种情况处理基本一致, 不同点只有当运行再后台时候,会有弹窗提示用户另外一个App通知,对于本地通知处理都是通过AppDelegate方法:...,服务器无法主动和用户交互(推送实时消息等),所以苹果推出了 APNs,允许设备和服务器分别与苹果推送通知服务器保持长连接状态。

1.8K30

App消息推送原理

基本概念 目的: 在用户打开AppApp主动向用户推送服务器最新消息 基本原理: 服务器如何先找到设备、再找到app?...作用: 功能需要,:资讯类产品新闻推送、工具类产品公告推送等等;活动运营需要,:电商类产品促销活动;召回用户 / 提高活跃度等等。...当你接收到通知打开应用,才开始从腾讯服务器接收数据,跟你之前看到通知里内容一样,但却是经由两个不同通道而来 2.1.2 优劣势 所以, iOS 推送,可以不严谨理解为: 1)苹果服务器朝手机后台挂一个...但是建议自己设置服务器实现推送功能。...Messaging) 3.2 三种基本推送方式:Push、Pull 和 SMS 本质: App将服务器更新信息推送用户App获取服务器信息,再推送用户 App从服务器获取最新消息基本方式

5.4K30

被后台杀死后,Android应用如何重新走闪屏逻辑

Android应用运行在后台时候,经常被系统LowMemoryKiller杀掉,当用户再次点击icon或者从最近任务列表启动时候,进程会被重建,并且恢复被杀之前现场。什么意思呢?...后台杀死与恢复堆栈-杀后.jpg 当用户再次启动APP时候会怎么样呢?这个时候,首先看到其实C,而不是栈底部A,也就是说往往被杀死后,恢复看到第一个界面是用户最后见到那个界面。 ?...从推送唤起被杀APP,如何走闪屏逻辑 对于推送消息处理,其路由器一般放在MainActivity,并且在onCreate跟onNewIntent都有添加,如果APP存活情况,可以直接跳转目标页面,...如果APP被杀,这个时候,希望先跳转主界面,再跳转目标页面,在效果上来看就是,用户先看到目标页面,点击返回时候再看到主界面,如果加上闪屏,希望达到效果是先看到闪屏、点击返回看到目标页,再点击返回看到主页面...,基本能够满足APP“死亡”情况下,先跳转闪屏需求。

2.7K40

喜马拉雅亿级用户离线消息推送系统架构设计实践

(被杀复活篇)》 《Android P正式版即将到来:后台应用保活、消息推送真正噩梦》 《全面盘点当前Android后台保活方案真实运行效果(截止2019年前)》 《2020年了,Android后台保活还有戏吗...《史上最强Android保活思路:深入剖析腾讯TIM进程永生技术》 《Android进程永生技术终极揭密:进程被杀底层原理、APP应对被杀技巧》 《Android保活从入门到放弃:乖乖引导用户加白名单吧...1.jpg 离线推送主要就是在用户打开APP时候有一个手段触达用户,保持APP存在感,提高APP日活。...5.png 因为每天会进行一两次全局推,且针对沉默用户不常使用APP用户)也有专门推送,存储方面实际上不存在“热点”,虽然使用了缓存,但作用很有限,且占用空间巨大。...(msgId)针对deviceId发送、接收和点击详情,比如头3位“100”表示因发送处于静默时间段所以发送失败。

1K10
领券