在我的应用程序中,我正在使用APNS。当应用程序正在运行并处于前台状态时,我收到推送通知。当我按下主页按钮时,我无法接收推送通知。 我需要帮助有两个原因
如果你能给我一个简短的教程,我将非常感激。提前致谢
我的代码是:
-(void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler {
if(application.applicationState == UIApplicationStateActive)
{
NSLog(@"Active");
[self addData];
}
else
{
NSLog(@"Not active");
[self addData];
}
}
答案 0 :(得分:0)
请按照步骤
首先,您需要在appdelegate中注册推送通知
[[UIApplication sharedApplication] registerForRemoteNotificationTypes:
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
现在检查通知的启动选项。
NSDictionary* dictionary = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (dictionary != nil)
{}
现在保存通知的令牌ID并发送到服务器
- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
NSString* deviceT = [[[[deviceToken description]
stringByReplacingOccurrencesOfString: @"<" withString: @""]
stringByReplacingOccurrencesOfString: @">" withString: @""]
stringByReplacingOccurrencesOfString: @" " withString: @""];
[UserDefault setDeviceToken:deviceT];
}
- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
}
现在在设备设置中检查通知中心您的应用程序是否存在。如果您的应用程序不在列表中,那么您将不会收到通知。如果您的应用程序是后台,则始终会发送推送您可以先检查设备设置 - 通知中心 - 您的应用可用性。
- (void)application:(UIApplication *)app didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if(app.applicationIconBadgeNumber!=0)
{
app.applicationIconBadgeNumber = app.applicationIconBadgeNumber - 1;
}
if (app.applicationState == UIApplicationStateInactive)
{
}
else if (app.applicationState == UIApplicationStateActive)
{
[self showNotificationInActiveMode:userInfo.alertBody];
}
}
对于第二点,除非应用程序未运行,否则无法更新数据。如果要更新数据,则必须单击推送通知才能启动或在前台打开应用程序。 如果没有未运行或未启动,则无法更新数据。