2015-08-31 7 views
0

Im пытается отправить push с двумя критериями где. Я делаю это так:Отправить расширенное уведомление push на parse.com с Rest API

curl -X POST 
-H "X-Parse-Application-Id: myappId" \ 
-H "X-Parse-REST-API-Key: myRESTApiId" \ 
-H "Content-Type: application/json" \ 
-d '{ 
"where": {“$and”:[{“deviceType": "winphone”},{”channels":{"$all":[“string1”],"$nin":[“string2”]}}]}, 
"data": {"alert": “String1 is comming”} 
    }' \ 
https://api.parse.com/1/push 

Что-то вроде: https://parse.com/questions/rest-api-or-constraint-on-multiple-fields-using-where, но я получаю сообщение об ошибке: Код ошибки 107 - недействительны JSON Анализировать

Как я могу отправить уведомление толчок для данного устройства и для данного канала с условием $ all и $ nin.

Благодарим за помощь! Hipek

+0

Было бы полезно, если бы вы объяснили, что вы пытаетесь сделать и как он в настоящее время не работает (например, какие сообщения об ошибках вы получаете). – lsowen

+0

Я пытаюсь отправить push-уведомление через «завиток» на телефонное устройство Windows людям, которые интересуются «string1» и не интересуются «string2». – hipek

ответ

2

Эта ошибка, скорее всего, будет возвращена, потому что ваше значение where не соответствует спецификации REST API. Вы также захотите убедиться, что вы согласны в использовании двойных кавычек, поскольку они также могут привести к искаженным ошибкам JSON (например, не использовать и , используйте ").

После фиксации, что мы в конечном итоге с нижеследующим, который до сих пор не действует согласно REST API Parse docs:

"where": { 
    "$and": [ 
      {"deviceType": "winphone”}, 
      {"channels": { 
       "$all": ["string1"], 
       "$nin":["string2"]} 
       } 
      ] 
}, 

Там есть пара проблем с запросом:

  1. $and не действительный оператор API REST API REST и не отображается в документах REST API. Все ограничения в запросе where неявно обозначены как AND, поэтому в любом случае это необязательно.

  2. Ваши $all и $nin ограничения более channels конфликт друг с другом, как не может быть больше, чем один такой запрос на ключ. Вместо этого вы можете создать уникальный канал для тех установок, которые должны получать сообщения, направленные на канал string1, но не на канал string2.

+0

У меня проблема simillar, мне нужно отправить сообщение только людям, которые подписываются на канал1 и не подписываются на канал2. Почему этот запрос плохой: {"deviceType": "winphone", "channels": {"$ all": ["channel1"], "$ nin": ["channel2"]}, "data": {" alert ":" channel1, но нет канала2 "}}? Также этот запрос плох: {"where": {{"deviceType": "winphone"}, {"channels": {"$ all": ["channel1"], "$ nin": ["channel2"]} }}, «data»: {«alert»: «channel1, но нет канала2»}}. Почему это так и что я могу сделать, чтобы он работал правильно? – michalsol

+0

Руководство по устранению неполадок в документации Parse - отличное место для начала, когда вы сталкиваетесь с проблемами с push. Один из наиболее важных советов, изложенных там, заключается в том, чтобы убедиться, что ваш push-запрос соответствует установкам, которые вы собираетесь использовать. Если push-запрос не принимает $ all и $ nin на одном и том же ключе, тогда ваш push просто не будет иметь предполагаемую аудиторию. –

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