2017-03-02 9 views
0

この行にはビルドの問題があります。それはbuidに多くの時間がかかります。swift3でOneSignal sendTagsを使用してデータを送信する際の構文の問題

strJsonBody = "{" 
     + "\"app_id\": " + GUARD_APP_ID + "," 
            + "\"included_segments\": [\"All\"]," 
     + "\"include_player_ids\": [" + playerId + "]," 
     + "\"data\": {\"name\": \"" + user_name + "\", \"email\": \"" + user_email + "\", \"phone\": \"" + user_phone + "\", \"uniqueCode\": \"" + user_uniqueCode + "\", \"uid\": \"" + user_uid + "\", \"type\": \"SOS\"}," 
     + "\"headings\": {\"en\": \"Resident SOS\"}," 
     + "\"ios_group\": \"sos\"," 
     + "\"ios_sound\": \"sos\"," 
     + "\"contents\": {\"en\": \"" + user_name + " signalled SOS\"}" 
     + "}"; 

これを行うには、他の方法はありますし、私はsendtagsでこのstrJsonBodyを渡していたとき、それは「予想引数の型に型 『文字列』の値を変換できませんエラーを与えている 『[AnyHashable:任意]!』 " APIは、JSON互換の辞書を期待しているとき

OneSignal.sendTags(strJsonBody as Any, onSuccess: { (result) in 
     print("success!") 
    }) { (error) in 
     print("Error sending tags - \(error?.localizedDescription)") 
    } 

答えて

0

あなたは、JSON文字列を渡しています。これはコンパイルする必要があります:

let tags = [ 
    "app_id": GUARD_APP_ID, 
    "included_segments": ["All"], 
    "include_player_ids": [playerId], 
    "data": [ 
     "name": user_name, 
     "email": user_email, 
     "phone": user_phone, 
     "uniqueCode": user_uniqueCode, 
     "uid": user_uid, 
     "type": "SOS" ], 
    "headings": [ "en": "Resident SOS" ], 
    "ios_group": "sos", 
    "ios_sound": "sos", 
    "contents": ["en": "\(user_name) signalled SOS"], 
] 
OneSignal.sendTags(tags, onSuccess: { (result) in 
    print("success!") 
}) { (error) in 
    print("Error sending tags - \(error?.localizedDescription)") 
} 

ただし、送信しているタグのようには見えません。アプリからプッシュ通知を直接送信しようとしているように、のように見えます。 OneSignal APIがそれをサポートしているかどうかはわかりません。

+0

はい、アプリからプッシュ通知を送信しようとしています。 –

+0

あなたは 'postNotification'メソッドが必要です:https://documentation.onesignal.com/docs/ios-native-sdk#section--postnotification- –

+0

Dave私は通知を送信しようとしていますが、応答も成功していますが、私はnotifciationを受けていない。 –

1
let payload = [ 
    "app_id": GUARD_APP_ID, 
    "include_player_ids": [playerId], 
    "data": [ 
     "name": user_name, 
     "email": user_email, 
     "phone": user_phone, 
     "uniqueCode": user_uniqueCode, 
     "uid": user_uid, 
     "type": "SOS" ], 
    "headings": [ "en": "Resident SOS" ], 
    "ios_sound": "sos", 
    "contents": ["en": "\(user_name) signalled SOS"], 
] 
OneSignal.postNotification(payload, onSuccess: { (result) in 
    print("success!") 
}) { (error) in 
    print("Error posting notification - \(error?.localizedDescription)") 
} 

削除:

"included_segments": ["All"], // Removed for security reasons 
"ios_group": "sos", // Not an option 

sendTags後のセグメンテーションのためのユーザーをマークするためのものです。リアルタイムで通知を送信するためにpostNotificationを使用することはできません。

関連する問題