我有一个应用程序目前在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