当用户通过点击通知消息进入应用时
- (BOOL)application:(UIApplication*)application didFinishLaunchingWithOptions:(NSDictionary*)launchOptions
launchOptions
中会有推送消息的userInfo信息,此时我们可以通过
NSDictionary* remoteNotification = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
获得推送消息内容。如果remoteNotification不为空,则说明用户通过推送消息进入,那么可以声明一个属性
@property (nonatomic) BOOL isLaunchedByNotification;
用于标识用户是否通过点击通知消息进入本应用。此时,
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo
一定会被调用,iOS7可以使用
- (void)application:(UIApplication*)application didReceiveRemoteNotification:(NSDictionary*)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
因为此方法的调用时,MainViewController已经被初始化,所以我们已经可以在MainViewController注册推送消息的监听,用于展示对应的视图,如下:
//订阅展示视图消息,将直接打开某个分支视图 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(presentView:) name:@"PresentView" object:nil];//弹出消息框提示用户有订阅通知消息。主要用于用户在使用应用时,弹出提示框 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(showNotification:) name:@"Notification" object:nil];
所以在AppDelegate的didReceiveRemoteNotification中可以通过判断isLaunchedByNotification来通知不同的展示方法。
脑补一个推送来临时,播放震动声音不停止的代码(不是播放音乐哦)
首先包含头文件
#import <AudioToolbox/AudioToolbox.h>
注册一段声音(本例中直接使用默认1007)
@property (nonatomic, assign) SystemSoundID soundID; NSString *path = [[NSBundle mainBundle] pathForResource:soundName ofType:nil]; AudioServicesCreateSystemSoundID((__bridge CFURLRef)[NSURL fileURLWithPath:path], &_soundID); AudioServicesAddSystemSoundCompletion(_soundID, NULL, NULL, soundCompleteCallback, NULL); // 核心代码 可重复执行 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); AudioServicesPlaySystemSound(_soundID); // block 用于 AudioServicesAddSystemSoundCompletion(_soundID, NULL, NULL, soundCompleteCallback, NULL); 函数调用 void soundCompleteCallback(SystemSoundID soundID,void * clientData) { AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); AudioServicesPlaySystemSound(soundID); } // 停止播放 -(void)stopAlertSoundWithSoundID:(SystemSoundID)soundID { AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate); AudioServicesDisposeSystemSoundID(soundID); AudioServicesRemoveSystemSoundCompletion(soundID); }
以上内容是小编给大家介绍的iOS点击推送消息跳转处理的相关内容,希望对大家有所帮助!
我正在网上阅读苹果的文档 处理本地和远程通知 在我看来,它有相互矛盾的说法。有人能澄清这些困惑吗?现在让我们严格地说一下远程通知(与本地通知相比)。 文档称,如果按下通知上的操作按钮,它将调用application:didfishlaunchingwithoptions并传递通知负载。之后,它会说,如果应用程序在前台运行,它会通过应用程序:DidReceiveMemoteNotify:发送通知。这
本文向大家介绍什么是iOS推送消息?相关面试题,主要包含被问及什么是iOS推送消息?时的应答技巧和注意事项,需要的朋友参考一下 答案:太简单,不作答 这是cocoa上的答案。 其实到不是说太简单,只是太泛泛的一个概念的东西。就好比说,什么是人。 推送通知更是一种技术。 简单点就是客户端获取资源的一种手段。 普通情况下,都是客户端主动的pull。 推送则是服务器端主动push。
消息推送 PDF版下载 如流开放了消息发送接口,企业可以使用这些接口让企业应用与用户间进行双向通信。 推送消息 向成员推送消息 请求方式:POST(HTTPS) 请求地址:https://api.im.baidu.com/api/message/send?access_token=ACCESS_TOKEN 请求body:(每种类型的消息请求body不同,详见消息推送格式) 参数说明: 参数 类型
1、离线消息 接口说明: 接口类型:回调型接口 接口作用:智齿将客服发送给用户的离线消息推送至企业预先配置好的回调地址上。 请求方法: POST 请求格式: { "type": 202, //消息类型,表示客服发送消息给客户 "partnerId": "", //企业自己的用户id "msgId": "" ,//消息id "content": "" ,//客
我设置了亚马逊SNS和iOS应用程序,通过SNS控制台发送推送通知,并在iOS中接收。工作正常。 现在,我尝试从一台设备向另一台设备发送推送通知,但收到以下错误: -[AWSServiceInfo initWithInfoDictionary:checkRegion:|无法从读取提供程序配置的凭据。请检查您的<code>信息。plist如果您通过<code>Info.plist 这是我发送推送通知
用户画像+平台提供了一个全新的功能:消息推送(目前支持为小米手机用户推送消息)。用户可以根据需要创建客群,待客群生成后,点击客群右侧的“推送消息”按钮,即可设置消息推送任务。 推送消息前,需要在小米开放平台接入小米推送服务和获得应用信息(App ID,App Key,App Secret等)。小米推送服务具体请参考:https://dev.mi.com/console/appservice/pus