为啥从 parse.com 推送只能到达一台设备?
Posted
技术标签:
【中文标题】为啥从 parse.com 推送只能到达一台设备?【英文标题】:Why does push from parse.com reach only one device?为什么从 parse.com 推送只能到达一台设备? 【发布时间】:2015-11-18 14:48:26 【问题描述】:我尝试实现推送。我有以下代码
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool
if application.applicationState != UIApplicationState.Background
// In that case, we skip tracking here to avoid double counting the app-open.
let preBackgroundPush = !application.respondsToSelector("backgroundRefreshStatus")
let oldPushHandlerOnly = !self.respondsToSelector("application:didReceiveRemoteNotification:fetchCompletionHandler:")
var pushPayload = false
if let options = launchOptions
pushPayload = options[UIApplicationLaunchOptionsRemoteNotificationKey] != nil
if (preBackgroundPush || oldPushHandlerOnly || pushPayload)
PFAnalytics.trackAppOpenedWithLaunchOptions(launchOptions)
if application.respondsToSelector("registerUserNotificationSettings:")
let settings = UIUserNotificationSettings(forTypes: [.Alert, .Badge, .Sound], categories: nil)
application.registerUserNotificationSettings(settings)
application.registerForRemoteNotifications()
else
let types : UIRemoteNotificationType = [.Badge, .Alert, .Sound]
application.registerForRemoteNotificationTypes(types)
对于订阅,我在 viewDidLoad
中使用以下代码
let currentInstallation = PFInstallation.currentInstallation()
currentInstallation.addUniqueObject("Giants", forKey: "channels")
currentInstallation.saveInBackground()
问题是当我发送推送时只有一台设备接收到它。出于测试目的,我将第二台设备连接到 Xcode,但它没有收到推送消息。
对于设置,我使用了开发证书。
开发证书有什么限制还是我做错了什么?
【问题讨论】:
您在 Parse 的推送交付报告中看到了什么? 它报告一个发送的推送 所以你发送了一个推送,你希望它被传送到两个设备?? 是的,因为我针对所有设备 当然,但是推送报告清楚地显示您的通知仅发送给一个。 【参考方案1】:这里有几件事情你应该记住。
-
最好在 App Delegate 中为设备注册推送通知。您的方法绝不是错误的,只是通常您在 App Delegate 中执行此操作(请参阅 Parse 文档)
您无法使用模拟器接收推送通知。您需要有一个实际的设备。
现在,如何查看哪里出了问题。
-
在您的 Prase 仪表板中,您应该会看到一个名为 installations 的类。在那里你应该有两个设备。如果您只看到一个设备,则意味着只有第一个设备已注册。要解决此问题,您可以将代码移动到 App Delegate,重新运行程序或设置断点以查看它是否甚至到达此代码。
检查通道的安装文件。您应该会看到一个名为 channels 的列,其中您应该有两个设备的 Giants。如果这里没有出现问题,那么您只针对一台设备。要修复此错误,您只需删除应用程序或手动添加 Channels
键
您可能遇到的另一个错误是您拒绝了发送推送通知的权限。确保在第二台设备上启用此功能。为此,请转到 设置 -> 通知 ->“您的应用程序名称” -> 将 允许通知 切换为开启。并选择横幅例如。
检查您是否在具有这两个设备的 Xcode 中安装了正确的配置文件。 这是正确答案。提问者在聊天中发现了这一点。用两台设备更新配置文件为他解决了这个问题。希望对你有帮助,朱利安
【讨论】:
那么您已经在安装中注册了两个设备? 是的,我在 Parse 安装表中看到了这两个设备,我通过比较应用程序和表内的设备令牌来检查它。 如何发送推送?代码还是面板? 我用以下代码s.mail.ru/joWYsZ2Pbfgq/img-2015-11-18-21-33-14.png 尝试了内部面板和内部应用程序 两次只有一台设备接收消息以上是关于为啥从 parse.com 推送只能到达一台设备?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 parse.com 将 Android 设备注册到推送通道