0

私はObjectiveCを初めて使用します。アプリでプッシュ通知を実装する必要があり、新しいアプリIDを作成し、新しいプロビジョニングプロファイルも作成しました。このリンクに記載されているすべての手順を完了しました

appDelegate.mファイルでこのデリゲート関数を宣言しました。

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

        NSString *deviceTokens = [[deviceToken description] stringByTrimmingCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"<>"]];
        deviceTokens = [deviceTokens stringByReplacingOccurrencesOfString:@" " withString:@""];
        NSLog(@"registered device token %@", deviceTokens);
        self.deviceToken = deviceTokens; 
}

- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { 

    NSString *str = [NSString stringWithFormat: @"Error: %@", err];
    NSLog(@"String %@",str);    

}

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {

    for (id key in userInfo) {
        NSLog(@"key: %@, value: %@", key, [userInfo objectForKey:key]);
    }    

}

ただし、このデリゲート関数は呼び出されません。この問題を解決するのを手伝ってください。

4

3 に答える 3

3

AppDelegated didfinishLaunching with optionsに、次の行を記述します

[[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound)];
于 2012-08-24T12:38:05.080 に答える
0

このコードを、アプリデリゲート内のアプリケーションdidFinishLaunchingWithOptionsメソッドに追加します

if([アプリケーションrespondsToSelector:@selector(registerUserNotificationSettings :)]){

    //We check because ios7 cannot respond to this method and there will be a crash..
    UIUserNotificationType types = UIUserNotificationTypeBadge | UIUserNotificationTypeSound | UIUserNotificationTypeAlert;

    UIUserNotificationSettings *mySettings = [UIUserNotificationSettings settingsForTypes:types categories:nil];

    [[UIApplication sharedApplication] registerUserNotificationSettings:mySettings];
    [application registerForRemoteNotifications];
}
else {
    //This will work on ios7 devices and below
    UIRemoteNotificationType types = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
    [application registerForRemoteNotificationTypes:types];
    [application registerForRemoteNotifications];
}

return YES;
于 2015-04-22T08:10:11.877 に答える
0

新しいデリゲートメソッドを使用する

Swift:func application(application:UIApplication、didReceiveRemoteNotification userInfo:[NSObject:AnyObject]、fetchCompletionHandler completeHandler:(UIBackgroundFetchResult)-> Void)

于 2016-02-29T22:49:12.370 に答える