接收APNS通知但无法在ios中的设备上显示
各位好,, 我正在尝试如何实现接收APNS通知但无法在ios中的设备上显示,ios,objective-c,apple-push-notifications,Ios,Objective C,Apple Push Notifications,各位好,, 我正在尝试如何实现pushnotification。为此,我已经阅读了苹果公司关于pushnotification的官方文件,也阅读了raywenderlich的博客,我非常了解pushnotification的流程。我已经创建了开发和生产证书,配置文件,其工作罚款和推送已成功发送和接收- -(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userI
pushnotification
。为此,我已经阅读了苹果公司关于pushnotification的官方文件,也阅读了raywenderlich的博客,我非常了解pushnotification的流程。我已经创建了开发和生产证书,配置文件
,其工作罚款和推送已成功发送和接收-
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo{
*** display message in uialertview******
}
但我的问题是,当我的应用程序也是前台和后台应用程序时,我如何才能像其他推送通知一样在设备的顶部显示推送
目前我正在尝试IOS 7.0和XCode 5.1.1版(5B1008)
提前感谢。当您处于
后台模式时
将根据通知中心的应用程序通知设置显示推送通知。你不必显示ios就能做到这一点
当您处于前台模式时
将收到通知,并调用-(void)application:(UIApplication*)application didReceiveMemotentification:(NSDictionary*)userInfo
方法。因此,使用此方法可以获得userinfo。只需NSLog userinfo dictionary,然后您就可以创建顶部带有标签的customview,并像ios默认横幅一样设置动画
希望这能对您有所帮助。根据苹果的说明,只有当应用程序处于后台模式时,才会显示推送/本地通知。如果通知在应用程序处于前台/活动状态时到达,则您需要手动管理它,因为iOS不会显示默认设计的通知横幅/警报 我只是将我的逻辑放在这里,用于在应用程序处于前台模式时管理通知:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
// check the application state for app is active or not.
if (application.applicationState == UIApplicationStateActive)
{
// Nothing to do if applicationState is Inactive, the iOS already displayed an alert view.
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Receive a Remote Notification" message:[NSString stringWithFormat:@"Your App name received this notification while it was running:\n%@",[[userInfo objectForKey:@"aps"] objectForKey:@"alert"]]delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}
首先,通过应用程序中的这些方法检查您是否成功注册到APNS
-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
}
-(void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error
{
}
然后在
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
NSDictionary *Notification = userInfo;
NSString *title = [(NSDictionary*)[(NSDictionary*)[Notification valueForKey:@"aps"] valueForKey:@"alert"] valueForKey:@"title"];
NSString *body = [(NSDictionary*)[(NSDictionary*)[Notification valueForKey:@"aps"] valueForKey:@"alert"] valueForKey:@"body"];
if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateActive)
{
}
else if ([[UIApplication sharedApplication] applicationState] == UIApplicationStateInactive || [[UIApplication sharedApplication] applicationState] == UIApplicationStateBackground)
{
UILocalNotification *localNotification = [[UILocalNotification alloc] init];
localNotification.userInfo = userInfo;
localNotification.soundName = UILocalNotificationDefaultSoundName;
localNotification.alertBody = body;
localNotification.fireDate = [NSDate date];
[[UIApplication sharedApplication] scheduleLocalNotification:localNotification];
}
}
如果应用程序处于活动状态,请显示UIAlertView。如果不是,则需要显示UILocalNotification。如果希望接收类似于横幅样式的设备顶部通知,请执行以下步骤
希望您能从我的回答中得到一些信息。当您的应用程序处于前台时,推送通知不会收到。当您的应用程序处于后台时,请检查通知。你收到推送的设备令牌吗?是的,我收到设备令牌并成功发送推送,我在DidReceiveEmoteNotification中收到推送消息…但我的问题是如何像其他应用程序推送通知一样显示此消息。我想,在你的设备设置->通知中心中,你的应用程序是否显示?是的,它与所有应用程序一起显示推送通知选项..嗨,有没有重播的想法,给你+1。我按照您的步骤操作,默认情况下,“通知”菜单中的“警报”样式为“条幅”,无法显示类似“条幅”样式的“警报”视图。我知道,当应用程序处于后台或未处于活动状态时,通知将以条幅样式显示。当应用程序在前台状态下运行时,你会收到警报式的通知。我不是说我他妈的是真的。你可以在谷歌上研究它@user3140414。谢谢你重播+1……是的,你是对的,在后台状态下,IOS会自动处理,但有可能创建像横幅这样的自定义视图吗库和@user3140414库对您有帮助吗?@user3140414如果您对答案感到满意,那么您可以向上投票和/或将其作为答案接受。愉快的编码。@RoxeN Rmani::向上投票需要15,因为我是堆栈溢出新手,所以没有权限:(:(