2016-11-24 8 views
5

私はプッシュ通知を管理するのにOneSignalを使用しています。一部の通知のために、私が受けている:解決方法:SwiftのOneSignalに文句を言う言語のコンテンツ

...通知は、英語のコンテンツ

を持っている必要がありますしかし、私は英語のすべてを送信するだけ

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

誰が、字幕、内容がストリング、結果は受信者IDです。ほとんどの通知は送信されますが、一部のエラーメッセージが表示されます。

コンソール:

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

私の完全な機能:

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) 
      } 
     }) 
    }) 
} 

は、私が何をしないのですか?ヘルプは非常に感謝しています。

答えて

3

4つのフィールドのいずれかが間違っているとします。この場合、間違っていると、英語以外のコーディングの文字や文字が無効になっている可能性があります。通知を送信する前に各フィールドを印刷します。

フィールドの1つが空またはnilであるため、このエラーが発生する可能性があります。通知を送信する前に再度ログに出力してください。

+0

が見えます。私はオプションの値を持つ関数を持っていました。たとえば、サブタイトル本体として空の文字列を送信しました...もっと具体的なエラーメッセージが役に立ちましたでしょう...助けてくれてありがとうございます –

+0

ようこそ。 「回答」と記入してください。 – Vincent

+3

私はそれを行います。私はあなたに賞金も授与されます。賞金のわずか6日が残っていて、誰かが有用なヒントやそのようなものを持っている可能性があります。心配しないでください。あなたのことを忘れることはありません。 –

1

あなたのJSON構造が間違っています。これは動作するコードの例です:

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

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

OneSignalドキュメント:あなたは右だったよう https://documentation.onesignal.com/docs/ios-native-sdk

関連する問題