1

私はiosプロジェクトとxcodeを持っており、AppdelegateからView Controllerへのデバイストークンを取得する必要があります.Appデリゲートのコードは次のとおりです。

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{    
    [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
    [[NSUserDefaults standardUserDefaults] synchronize];
}

そして、ビューコントローラーで:

[super viewDidLoad];    
[[NSUserDefaults standardUserDefaults] objectForKey:@"token"];

初めて試したときは動作していましたが、次回はアプリがクラッシュしました... View Controllerからそのコードを削除すると動作するので、そこが間違っているに違いありません... 助けてもらえますか?

4

1 に答える 1

2

まず、電話/シミュレーターからアプリを削除します
NSUserDefaults がキーの間違ったデータを保持している可能性があるためです。

ここに画像の説明を入力

次に、コードをこれらに置き換えます。

-(void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken
{
    if(deviceToken){
        [[NSUserDefaults standardUserDefaults] setObject:deviceToken forKey:@"token"];
        [[NSUserDefaults standardUserDefaults] synchronize];
    }
}


viewDidLoad では、

- (void)viewDidLoad
{
    [super viewDidLoad];
    id token = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
    if(token){
        NSLog(@"I have got the token");
    }else NSLog(@"no token");
}
于 2013-05-06T20:12:24.680 に答える