В рамках работ по переходу клиентской части Push & Pull в мобильном приложении на нативный вызов, пришлось изменить формат отправляемых на сервер сообщений.
(это то что вы отправляете через CPullStack::AddByUser, CPullWatch::addToStack )
Ранее мы кодировали команды к серверу с помощью нашей волшебной CUtil::PhpToJSObject()
По не известным науке причинам (хвостов не найти), кодирование происходит не по стандартам JSON, из-за этого мы не можем нативными средствами анализировать содержимое пакетов и проводить над ними какие либо операции, а нам очень надо

В обновлении Push & Pull версии 18.0.0 мы переходим к кодированию через Bitrix\Main\Web\Json::encode
В связи с этим, ваш JS код может поймать несколько ошибок связанных с типизацией, а может и не поймать, нужно проверять

Например: вы отправляли следующий массив
Array( "id" => 1234 ) |
{"id":"1234"} |
Начиная с обновления pull 18.0.0 такой код будет приводить к ошибке, нужно заменить его на id.toString().indexOf('12')
В следующем примере, вы можете увидеть разницу, отправляем массив:
$array = Array(
'digit' => 123,
'string' => 'abc',
'mixed' => 'abc123',
'booleanTrue' => true,
'booleanFalse' => false,
'null' => null,
'array' => Array(1,2,3),
'arrayAssoc' => Array("1" => 1, "2" => 2, "3" => 3),
'arrayEmpty' => Array(),
'empty' => '',
); |
{
"digit": 123,
"string": "abc",
"mixed": "abc123",
"booleanTrue": true,
"booleanFalse": false,
"null": null,
"array": [
1,
2,
3
],
"arrayAssoc": {
"1": 1,
"2": 2,
"3": 3
},
"arrayEmpty": [],
"empty": "",
} |
CUtil::PhpToJSObject
{
'digit':'123',
'string':'abc',
'mixed':'abc123',
'booleanTrue':true,
'booleanFalse':false,
'null':'',
'array':[
'1',
'2',
'3'
],
'arrayAssoc':{
'1':'1',
'2':'2',
'3':'3'
},
'arrayEmpty':[],
'empty':''
} |
Пожалуйста, в течении лета, выделите время и проверьте ваш код (который отправляет мгновенные команды и принимает их) на отсутсвие ошибок!
Предварительный код нового модуля находится во вложении.
Подробнее о технологии вы можете прочитать здесь