アプリがシャットダウンした後にプッシュ通知を送信するアプリを作成しています。サーバーとの通信に AFNetworking を使用しています。これが私の AFNetworking 関数です。
-(void)sendPushNotification:(NSMutableDictionary *)params onCompletion:(JSONResponseBlock)completionBlock{
NSLog(@"%@%@",kAPIHost,kAPIPush);
NSMutableURLRequest *apiRequest = [self multipartFormRequestWithMethod:@"POST" path:kAPIPush parameters:params constructingBodyWithBlock:^(id <AFMultipartFormData>formData){
//TODO: attach file if needed
}];
NSLog(@"Till here");
AFJSONRequestOperation *operation = [[AFJSONRequestOperation alloc] initWithRequest:apiRequest];
[operation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject){
//success !
NSLog(@"SUCCESSSS!");
completionBlock(responseObject);
}failure:^(AFHTTPRequestOperation *operation, NSError *error){
//Failure
NSLog(@"FAILUREE!");
completionBlock([NSDictionary dictionaryWithObject:[error localizedDescription] forKey:@"error"]);
}];
NSLog(@"tille here 2");
[operation start];
NSLog(@"till here 3");
}
次に、プッシュ通知を送信するために、次のコードがあります。
- (IBAction)changeEnglish:(id)sender {
[[NSUserDefaults standardUserDefaults] setObject:[NSArray arrayWithObjects:@"en", nil] forKey:@"AppleLanguages"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *alertCancel = NSLocalizedString(@"Home_alertCancel", nil);
NSString *message = @" Do you wish to change the language? The application will shut down after this. Next up you can restart it again.";
BlockAlertView *alert = [BlockAlertView alertWithTitle:@"Change language" message:message];
[alert setCancelButtonWithTitle:alertCancel block:nil];
[alert setDestructiveButtonWithTitle:@"Ok" block:^{
[self sendPush];
exit(0);
}];
}
-(void)sendPush{
[[API sharedInstance]sendPushNotification:NULL onCompletion:^(NSDictionary *json){
//completion
if(![json objectForKey:@"error"]){
NSLog(@"notification send");
}else {
NSLog(@"Cannot connect to the server");
}
}];
}
まず、ブラウザでプッシュ通知を実行すると (ブラウザにリンクを入力して Enter キーを押します)、正常に動作します。しかし、コードで実行したいとき。次のログが表示されます。
2012-12-12 13:44:43.695 doktersApp[666:907] http://linkexample/simplepush.php
2012-12-12 13:44:43.702 doktersApp[666:907] till here
2012-12-12 13:44:43.705 doktersApp[666:907] till here2
2012-12-12 13:44:43.706 doktersApp[666:907] till here3