IOS SWIFT PARSE: Pfcloud.callFunction - PullRequest
       14

IOS SWIFT PARSE: Pfcloud.callFunction

0 голосов
/ 04 марта 2020

У меня есть старое приложение в объективе C, использующее облачный код для отправки толчков на платформу back4app.

Приложению удается правильно отправлять нажатия, и это код:

- (IBAction)inviaPush:(UIButton *)sender {
   NSString *canale;
   for (int i=0; i<=4; i++) {
       switch (i) {
           case 0:canale=@"TraduzioniEDI";
               break;
           case 1:canale=@"NavFtpYM";
               break;
           case 2:canale=@"InvioMailFTP";
               break;
           case 3:canale=@"VermasMto";
               break;
           case 4:canale=@"EdiAltova";
               break;
           default:
                break;
       }
       NSString *testoPush =[NSString stringWithFormat:@"%@ Test Invio %@",  canale,[NSDate date]];
        [PFCloud callFunctionInBackground:@"push"
                          withParameters:@{@"channels": @[canale], @"data": @{@"alert": testoPush,@"badge":@"Increment"}}
                                   block:^( NSString *result, NSError *error) {
                                       if (!error) {
                                           NSLog(@"Risultato: %@",result);
                                       } else{
                                           NSLog(@"Errore %@",error);
                                       }
                                   }];
   }
}

Запустив код, я получаю 5 нажатий и в информации панели управления back4app я нахожу:

2020-03-02T01: 14: 53.533Z - Функция облачного ранга pu sh для пользователя не определена с: Input: {"channel": ["VermasMto"], "data": {"alert": "VermasMto Test Invio 2020-03-02 01:14:52 +0000 "}} Результат:" Отправлено !! "

Я пытался преобразовать программу в быстрый код, чтобы отправить pu sh is:

func inviaPush (){
   var canale :String = ""
   for i in 0...4
   {
       switch i {
       case 0: canale = "TraduzioniEDI"
       case 1: canale = "NavFtpYM"
       case 2: canale = "InvioMailFTP"
       case 3: canale = "VermasMto"
       case 4: canale = "EdiAltova"
       default: canale=""
       }
       let testoPush = "\(canale) Test invio - Swift"
       PFCloud.callFunction(inBackground: "push", withParameters: ["channels": canale, "data": ["alert": testoPush,"badge":"Increment"]], block: {
            (result: Any?, error: Error?) -> Void in
            if error != nil {
               if let descrip = error?.localizedDescription{
                   print(descrip)
               }
           }else{
               print(result as! String)
           }
        })
   }
}

в этом случае я не получаю толчков, и в информации я нахожу следующее: 2020-03-02T01: 17: 25.505Z - Запускаю облачную функцию pu sh для пользователя, неопределенного с: Input: {" channel ":" NavFtpYM "," data ": {" alert ":" NavFtpYM Test invio "}} Результат:" Отправлено !! "

2020-03-02T01: 17: 25.504Z - Невозможно количество установок для PushStatus hm5hbCzDvd: плохое значение $ *

Сравнивая информацию, показанную на приборной панели, я вижу разницу во входных данных

в объективных C (работающих) входных данных канала, имеющих квадрат скобка:

Ввод: {"channel": ["VermasMto"],

, в то время как при отправке из swift они не имеют

Ввод: {"channel": "NavFtpYM ",

, конечно, я неправильно вызываю метод PFCloud.callFunction.

Есть предложения?

Fabrizio

1 Ответ

1 голос
/ 04 марта 2020

решение было простым ...

необходимо изменить

PFCloud.callFunction(inBackground: "push", withParameters: ["channels": canale, "data": ["alert": testoPush,"badge":"Increment"]], block: {

в

PFCloud.callFunction(inBackground: "push", withParameters: ["channels": [canale], "data": ["alert": testoPush,"badge":"Increment"]], block: {

Фабрицио

...