iOS点击推送消息跳转处理
当用户通过点击通知消息进入应用时
-(BOOL)application:(UIApplication*)applicationdidFinishLaunchingWithOptions:(NSDictionary*)launchOptions
launchOptions
中会有推送消息的userInfo信息,此时我们可以通过
NSDictionary*remoteNotification=[launchOptionsobjectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
获得推送消息内容。如果remoteNotification不为空,则说明用户通过推送消息进入,那么可以声明一个属性
@property(nonatomic)BOOLisLaunchedByNotification;
用于标识用户是否通过点击通知消息进入本应用。此时,
-(void)application:(UIApplication*)applicationdidReceiveRemoteNotification:(NSDictionary*)userInfo
一定会被调用,iOS7可以使用
-(void)application:(UIApplication*)applicationdidReceiveRemoteNotification:(NSDictionary*)userInfofetchCompletionHandler:(void(^)(UIBackgroundFetchResult))completionHandler
因为此方法的调用时,MainViewController已经被初始化,所以我们已经可以在MainViewController注册推送消息的监听,用于展示对应的视图,如下:
//订阅展示视图消息,将直接打开某个分支视图 [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(presentView:)name:@"PresentView"object:nil];//弹出消息框提示用户有订阅通知消息。主要用于用户在使用应用时,弹出提示框 [[NSNotificationCenterdefaultCenter]addObserver:selfselector:@selector(showNotification:)name:@"Notification"object:nil];
所以在AppDelegate的didReceiveRemoteNotification中可以通过判断isLaunchedByNotification来通知不同的展示方法。
脑补一个推送来临时,播放震动声音不停止的代码(不是播放音乐哦)
首先包含头文件
#import<AudioToolbox/AudioToolbox.h>
注册一段声音(本例中直接使用默认1007)
@property(nonatomic,assign)SystemSoundIDsoundID; NSString*path=[[NSBundlemainBundle]pathForResource:soundNameofType:nil]; AudioServicesCreateSystemSoundID((__bridgeCFURLRef)[NSURLfileURLWithPath:path],&_soundID); AudioServicesAddSystemSoundCompletion(_soundID,NULL,NULL,soundCompleteCallback,NULL);//核心代码可重复执行 AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); AudioServicesPlaySystemSound(_soundID); //block用于AudioServicesAddSystemSoundCompletion(_soundID,NULL,NULL,soundCompleteCallback,NULL);函数调用 voidsoundCompleteCallback(SystemSoundIDsoundID,void*clientData) { AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); AudioServicesPlaySystemSound(soundID); } //停止播放 -(void)stopAlertSoundWithSoundID:(SystemSoundID)soundID { AudioServicesDisposeSystemSoundID(kSystemSoundID_Vibrate); AudioServicesDisposeSystemSoundID(soundID); AudioServicesRemoveSystemSoundCompletion(soundID); }
以上内容是小编给大家介绍的iOS点击推送消息跳转处理的相关内容,希望对大家有所帮助!