2016-11-24 9 views
5

Używam OneSignal do zarządzania moimi powiadomieniami push. Dla niektórych zgłoszeń, Otrzymuję:Jak rozwiązać: treść narzekająca na OneSignal w Swift

Powiadomienia muszą mieć zawartość

języka angielskiego Ale jestem tylko wysyłania wszystko w języku angielskim ...

oneSignal.postNotification(["headings" : ["en": "\(who)"], 
          "subtitle" : ["en": "\(subtitle)"], 
          "contents" : ["en": "\(contents)"], 
          "include_player_ids": [result]], 

Kto, podtytuł, treść to Ciągi, wynik to identyfikator odbiorcy. Większość powiadomień jest wysyłanych, dla niektórych otrzymuję komunikat o błędzie.

konsoli:

> ERROR: Create notification failed 
Error Domain=OneSignalError Code=400 "(null)" UserInfo={returned={ 
    errors =  (
     " Notifications must have English language content" 
    ); 
}} 

Moja pełna funkcja:

func sendPush(_ receiverID: String, _ who: String, _ didWhat: String, _ message: String?) { 

    var subtitle = "" 
    var contents = "" 
    if message != nil { 
     contents = message! 
    } 

    switch didWhat { 
    case "likePost": 
     subtitle = "liked your post" 
    case "commentPost": 
     subtitle = "commented on your post" 
    case "likeComment": 
     subtitle = "liked your comment" 
    case "message": 
     subtitle = "sent you a message" 
    case "friendsRequest": 
     subtitle = "sent you a friend request" 
    case "friendAccept": 
     subtitle = "accepted your friend request" 
    case "follow": 
     subtitle = "just followed you" 
    default: 
     break 
    } 

    getOneSignalPlayerID(receiverID, completion: { result in 

     oneSignal.postNotification(["headings" : ["en": "\(who)"], 
            "subtitle" : ["en": "\(subtitle)"], 
            "contents" : ["en": "\(contents)"], 
            "include_player_ids": [result]], 
     onSuccess: { (success) in 
      if success != nil { 
       print(success!) 
      } 
     }, onFailure: { (failure) in 
      if failure != nil { 
       print(failure!) 
       crashlyticsLog("getOneSignalPlayerID", failure!.localizedDescription) 
      } 
     }) 
    }) 
} 

Czego mi brakuje? Pomoc jest bardzo cenna.

Odpowiedz

3

Zakładam, że jedno z 4 pól jest nieprawidłowe. Nieprawidłowe w tym przypadku może oznaczać, że ma sone nielegalnych znaków lub znaków w nieanglojęzycznym kodowania. Wydrukuj każde pole przed wysłaniem powiadomienia.

Inna sytuacja, która powoduje zwiększenie tego błędu, może być spowodowana, ponieważ jedno z pól jest puste lub zerowe. Ponownie wydrukuj je do dziennika przed opublikowaniem powiadomienia.

+0

wygląda masz rację. Miałem funkcję z opcjonalnymi wartościami, wysyłając puste ciągi, na przykład jako treść podtytułu ... bardziej konkretny komunikat o błędzie byłby pomocny ... dziękuję za pomoc –

+0

Twoje powitanie. Proszę oznaczyć jako "odpowiedź". – Vincent

+3

. i ja również nagrodzę cię nagrodą. pozostało tylko 6 dni do zdobycia nagrody i może ktoś ma przydatne wskazówki lub coś w tym stylu. nie martw się. nie zapomnę o tobie. –

1

Twoja struktura JSON jest nieprawidłowa. To jest przykład kodu, który działa:

let objNotif = ["contents": ["en" : message], "include_player_ids": [userID!]] 
    //print(objNotif) 

    OneSignal.postNotification(objNotif, onSuccess: { (jsonSuccess) in 
     //Post OK 
     }) { (error) in 
     //Error 
    } 

OneSignal Dokumentacja: https://documentation.onesignal.com/docs/ios-native-sdk

Powiązane problemy