Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/103.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 未调用Apple推送通知委托方法_Ios_Iphone_Ipad_Ios8_Apple Push Notifications - Fatal编程技术网

Ios 未调用Apple推送通知委托方法

Ios 未调用Apple推送通知委托方法,ios,iphone,ipad,ios8,apple-push-notifications,Ios,Iphone,Ipad,Ios8,Apple Push Notifications,工作正常,但使用相同的代码,无论调用成功还是失败的委托方法,日志上都没有错误。今天出现的这个问题是在iPadAir(8.0)上测试它,还有其他人面临同样的问题吗 以下是我的实现代码: - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if ([application respondsToSelector:@selector(r

工作正常,但使用相同的代码,无论调用成功还是失败的委托方法,日志上都没有错误。今天出现的这个问题是在iPadAir(8.0)上测试它,还有其他人面临同样的问题吗

以下是我的实现代码:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    // iOS 8
    [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
    [[UIApplication sharedApplication] registerForRemoteNotifications];
} else {
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
     (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}
return YES;
}

- (void)application:(UIApplication*)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData*)deviceToken
{
}

- (void)application:(UIApplication*)application didFailToRegisterForRemoteNotificationsWithError:(NSError*)error
{
}

谢谢将这些方法添加到AppDelegate

#ifdef __IPHONE_8_0
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
    //register to receive notifications
    [application registerForRemoteNotifications];
}

- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
{
    //handle the actions
    if ([identifier isEqualToString:@"declineAction"]){
    }
    else if ([identifier isEqualToString:@"answerAction"]){
    }
}
#endif

请在didfinishlaund方法中添加以下代码

    if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 8.0)
    {
        [[UIApplication sharedApplication] registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeSound | UIUserNotificationTypeAlert | UIUserNotificationTypeBadge) categories:nil]];
        [[UIApplication sharedApplication] registerForRemoteNotifications];
    }else {
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
         (UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert)];
    }

    if ([launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]) {

        [self application:[UIApplication sharedApplication] didReceiveRemoteNotification:[launchOptions objectForKey:@"UIApplicationLaunchOptionsRemoteNotificationKey"]];
    }

请按照此操作注册远程通知。()您是否更改了设置配置文件?使用iOS 8时,您必须添加
didRegisterUserNotificationSettings
。现在,您正在使用iOS 7上的DeviceToken的
DidRegisterForRemotionTifications。是的,我最近确实更改了配置文件,但即使切换回我的旧配置文件,我仍然无法获得任何设备令牌。突然之间,我们也面临着同样的问题。。还没有解决办法。。这是我们现在面临的最严重的错误。这与我的代码几乎相同,使用它我仍然无法获取设备令牌。请检查您的服务方。。检查pem文件是否正常??这段代码很完美,我使用这段代码,我得到了设备令牌。因为我还没有设备令牌,所以服务器上没有任何东西可以检查。我知道您的代码是正确的,但仍然不适用于我,所以一定是其他原因。调用了didRegisterUserNotificationSettings,但handleActionWithIdentifier或任何其他与通知相关的方法不会发生任何情况。您还应该添加-(void)application:(UIApplication*)应用程序didRegisterForRemotonificationswithDeviceToken:(NSData*)deviceToken;-(无效)应用程序:(UIApplication*)应用程序未能注册远程通知,错误为:(N错误*)错误;