为啥从 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 上的 Apple 推送通知

如何使用 parse.com 将 Android 设备注册到推送通道

尝试使用 Parse.com 获取推送通知无法在设备上运行

推送通知不适用于通过 Parse.com 发送的 Android 和 iOS 设备

向知道电话号码的特定设备发送推送通知,parse.com

Parse 不为推送通知注册设备