我有一個應用程序目前在beta測試,具有消息功能。它被設置爲當用戶從另一個用戶收到新消息時發送推送通知。只有時間推送通知的工作方式是當用戶專門向我發送消息時。如果我嘗試向任何其他用戶發送消息或任何用戶互相發送不包含我的消息,則推送通知不起作用。 只有發送給我的消息會在我的設備上觸發推送通知。推送通知不從我的設備發送 - 解析
下面是Parse的一些簡單屏幕截圖,其中顯示了正確發送的一個按鍵以及沒有發送的一個按鍵。
這是命名爲「阿利薩」我在我正確地接收到推送通知其他用戶發送私人消息(你可以通過「推送發送」 = 1見):
這裏是說推的細節:
現在,這裏是一傢俬人消息發送從我的設備,那收到了同樣的裝置正確推送通知,回到「Alissa」。正如你所看到的,「推送發送」 = 0,意思是我的設備發送的消息,但收件人沒有收到推送通知:
這裏是推的細節,包含幾乎相同信息工作一個發給我:
最後,這裏是另一個推不工作「阿利薩」那不是我,所以用戶從我的設備放在其他用戶之間發送。
這是一種模式,當我看到所有推的列表,從用戶在我的應用程序。除了推送發送到我的設備時,它們都「推送」= 0,「推送發送= 1」。
我已經打印到我的推送通知方法完成處理程序中的控制檯,並且它們表明當我向其他用戶發送消息時,推送已成功發送。我還會指出,我的設備正在用於此應用程序的開發。
另外作爲一個方面說明,它並不總是這樣。幾個星期前,一切正常。我發佈了多個新版本,從未遇到過問題。
任何人都可以指引我在正確的方向嗎?
編輯:下面我已經包含更多詳細信息,包括我的應用程序中的代碼和 我的開發者帳戶和解析後端的詳細信息。在我的應用程序
以下
相關代碼代碼,我在我的AppDelegate所建議的解析,包括設立推送通知。值得注意的是,println
語句「確實註冊了用戶通知設置」和「註冊設備令牌的遠程通知」都在應用程序啓動時被正確記錄。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// ...
let userNotificationTypes = UIUserNotificationType.Alert | UIUserNotificationType.Badge
let settings = UIUserNotificationSettings(forTypes: userNotificationTypes, categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
// ...
}
func application(application: UIApplication, didRegisterUserNotificationSettings notificationSettings: UIUserNotificationSettings) {
println("did register user notification settings")
}
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
PFInstallation.currentInstallation().setDeviceTokenFromData(deviceToken)
PFInstallation.currentInstallation().saveInBackground()
println("did register for remote notifications with device token")
}
func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
println("didFailToRegisterForRemoteNotificationsWithError: ", error.localizedDescription)
}
這是我將郵件發送給其他用戶時所包含的代碼。 println
陳述「成功」記錄正確也是不值得的。從我的開發人員帳戶
這裏
PFInstallation.query().whereKey("user", equalTo: incomingUser)
PFPush().setQuery(pushQuery)
let senderName = PFUser.currentUser()!.objectForKey("name") as! String
let data = [
"alert" : "New message from \(senderName)",
"badge" : "Increment"
]
push.setData(data)
push.sendPushInBackgroundWithBlock { (success: Bool, error: NSError?) -> Void in
if success {
println("success")
} else {
println(error?.localizedDescription)
}
}
相關的細節是表示我的開發人員門戶我的應用程序ID的屏幕截圖。這似乎表明,推送通知能正常(我刪除並重新添加的所有證書與新的供應配置文件)
相關細節從我解析賬號
這裏是我的推Parse中的通知設置。當我重新創建證書時,所有這些信息都已更新。
雖然我不知道這可能提供洞察的一些水平。這是Parse中PFInstallations表的截圖。任何時候有人登錄/打開應用程序都會創建安裝。我只是在我的設備上運行應用程序,而我在桌面上的記錄是最好的。與其餘部分不同的是,「deviceToken」列中的值僅適用於我的設備。當我刪除我的PFInstallation記錄並重新啓動應用程序重新創建它時,總是會在「deviceToken」下創建一個值。
在Xcode
相關細節下面是代碼在我的Xcode構建設置簽署的擴展視圖。此代碼簽名在項目和目標代碼簽名中都是相同的。
再次,推送通知正在爲所有用戶短信的其他用戶,只有當從我的設備發送給其他用戶的消息不工作。
亞倫,你可以發佈你的推送通知代碼,iOS和任何你可能使用的雲代碼?也許我們可以從那裏更好地診斷。 –
@RyanKreager我編輯了我原來的帖子,在上面包含了更多的細節。 – Aaron
@RyanKreager此外,我目前沒有使用任何雲代碼。 – Aaron