2015-07-20 2 views
0

Я пытаюсь реализовать Push-уведомления iOS с помощью Parse.com SDK. Проблема заключается в том, что иногда Push Notification не отправляется без какого-либо журнала ошибок. Я изменил код так:Уведомление об отправке в Objective-C

- (IBAction)send:(id)sender { 
    PFQuery *usernameQuery = [PFUser query]; 
    [usernameQuery whereKey:@"objectId" containedIn:self.recipients]; 

    PFQuery *pushQuery = [PFInstallation query]; 
    [pushQuery whereKey:@"user" matchesQuery:usernameQuery]; 

    PFPush *push =[[PFPush alloc] init]; 
    [push setQuery:pushQuery]; 
    [push setMessage:[NSString stringWithFormat:@"%@: %@", [PFUser currentUser].username, self.kwik]]; 
    [push sendPushInBackground]; 

    [self.navigationController popToRootViewControllerAnimated:YES]; 

    NSLog(@"%p", push); 
} 

Я не знаю, если эта проблема все еще происходит с PFPush выделяется каждый раз пользователь посылает толчок. Прежде чем я изменил код на этот, я вызывал self.push = [[PFPush alloc] init]; в методе viewDidLoad, потому что я не хотел выделять новый PFPush каждый раз, когда пользователь отправляет Push-Notification из-за использования памяти. Теперь мой вопрос: важно ли распределять новый объект PFPush каждый раз, когда пользователь отправляет push или я могу выделить его в методе viewDidLoad?

+1

в проекте ARC, который, вероятно, есть, вещи, выделенные и не сохраненные чем-то другим (например, сильная переменная экземпляра или помещенная в уже сохраненную коллекцию), будут освобождены, как только они выйдут из области видимости. Вы не должны беспокоиться о толчке, выделенном в OP. Это длится до тех пор, пока оно требуется для толчка. – danh

+0

Спасибо @danh, это действительно помогло мне. К сожалению, я не могу отметить ваш комментарий как лучший ответ. – Strikecounter2

+0

рад помочь. я не ответил на это, потому что совет по управлению памятью был всего лишь половинчатым ответом, если вы также испытываете проблемы с нажатием. пытался ответить на оба ответа. – danh

ответ

1

Линия:

PFPush *push =[[PFPush alloc] init]; 

создает объект, но ссылки на него недолговечны (время, необходимое для завершения запроса асинхронного толчка), а также в проекте ARC, код будет вставлен в компилируйте время, чтобы освободить его, поэтому нет необходимости беспокоиться о распределении памяти.

Возможно, у вас возникла проблема, связанная с отправкой. Один из способов отладки - использовать block variety of push in background called sendPushInBackgroundWithBlock. При этом вы можете проверить ошибку, если она включена.

+0

Это журнал ошибок, я зарегистрировал и возвратил Array и заданную ошибку userInfo: Ошибка userInfo: { NSLocalizedDescription = "Клиентам не разрешено выполнять операцию поиска в установочной коллекции."; code = 119; error = "Клиентам не разрешается выполнять операцию поиска в установочной коллекции."; originalError = "Error Domain = NSURLErrorDomain Code = -1011 \" Операция cann \ U2019t будет завершена. (NSURLErrorDomain error -1011.) \ ""; tempor = 0; } 2015-07-21 20: 32: 24.296 TestApplication [1411: 46433] (null). Но 10/10 нажатий все еще были отправлены раньше. – Strikecounter2

+0

Хорошо. Думаю, это имеет смысл. Я сделал что-то вроде вышеописанного кода облака, где вы можете кататься вокруг (разумных) ограничений безопасности, подобных этому с помощью useMasterKey. Я отредактирую, чтобы удалить эту часть совета. По крайней мере, проверка ошибок в методе отправки может оставаться полезной. – danh

+0

Да, я также подумал, что это будет выход ошибки, так как я немного об этом прочитал. Но еще один вопрос: есть ли такая же функциональность, которую я написал здесь (пользовательское push-уведомление пользователя) в облачном коде? – Strikecounter2

Смежные вопросы