使用PushMeBaby測試推送,log顯示成功但設備沒有收到信息的同學來看!

用PushMeBaby測試推送,機器老是接收不到推送的信息,也沒有什麼錯誤提示,開始以爲是證書的問題,結果從新生成證書,最終還是不行;PushMeBaby返回的信息

PushMeBaby[3153:303] SSLHandshake(): 0

PushMeBaby[3153:303]SSLWrite():  0  109

看代碼發現是成功,說明網絡上應該是沒問題的,有開始懷疑機器的問題,換了好幾個同事的機器,結果還是不行,求助網絡,發現下面的帖子,根據描述一一排查,結果發現是  self.payload的字符串格式的問題,特轉載此貼,引以爲戒:

轉帖地址:http://www.cocoachina.com/bbs/simple/?t116468.html

首先 你的console理打印出

2012-09-23 19:55:23.229 PushMeBaby[3153:303] MakeServerConnection(): 0
2012-09-23 19:55:23.230 PushMeBaby[3153:303] SSLNewContext(): 0
2012-09-23 19:55:23.230 PushMeBaby[3153:303] SSLSetIOFuncs(): 0
2012-09-23 19:55:23.231 PushMeBaby[3153:303] SSLSetConnection(): 0
2012-09-23 19:55:23.231 PushMeBaby[3153:303] SSLSetPeerDomainName(): 0
2012-09-23 19:55:23.231 PushMeBaby[3153:303] SecKeychainOpen(): 0
2012-09-23 19:55:23.329 PushMeBaby[3153:303] SecIdentityCreateWithCertificate(): 0
2012-09-23 19:55:23.330 PushMeBaby[3153:303] SSLSetCertificate(): 0
2012-09-23 19:55:29.575 PushMeBaby[3153:303] SSLHandshake(): 0

這表示服務端連接成功

然後點擊push

打印出 2012-09-23 19:56:13.967 PushMeBaby[3153:303]SSLWrite():  0  109

前邊的0表明已經發送成功了 後邊的數字表示你的payload的長度

如果這樣沒有收到推送消息的話 那就改下邊兩段代碼

result = MakeServerConnection("gateway.sandbox.push.apple.com", 2195, &socket, &peer);   改爲
result = MakeServerConnection("gateway.push.apple.com", 2195, &socket, &peer);

result = SSLSetPeerDomainName(context, "gateway.sandbox.push.apple.com", 30);   改爲
result = SSLSetPeerDomainName(context, "gateway.push.apple.com", 22);//22表示gateway.push.apple.com地址的長度

改完之後再試 看看有沒有收到消息 消息接收時間很短在幾秒內就能收到推送消息

如果還沒有收到的話 那就查看你的payload  payload是JSON格式字符串 用於顯示推送消息內容

我的payload是self.payload = @"{\"aps\":{\"sound\":\"default\",\"badge\":\"1\",\"alert\":\"Hello! this is a test!\"}}";
這裏注意,我的badge:1,這裏的1我也當成了一個字符串去處理,這樣就能接收到消息了,爲了這個地方改了一下午。。。
引以爲戒

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章