为什么来自parse.com的推送只能访问一台设备?

时间:2015-11-18 14:48:26

标签: ios swift parse-platform push-notification

我尝试实施推送。我有以下代码

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,但它没有收到推送消息。

对于设置我使用了开发证书。

开发证书是否有任何限制或我做错了什么?

1 个答案:

答案 0 :(得分:1)

这里有一些你应该记住的事情。

  1. 在App Delegate中为设备签名推送通知是一种很好的做法。绝不是你的方法错了,通常你只是在App Delegate中这样做(参见解析文档)
  2. 您无法使用模拟器接收推送通知。你需要有一个实际的设备。
  3. 现在,如何看出可能出现问题的地方。

    1. 在Prase仪表板中,您应该看到一个名为installation的类。在那里你应该有两个设备。如果您只看到一个设备,表示只注册了第一个设备。要解决此问题,您可以将代码移动到App Delegate,重新运行程序或设置断点以查看它是否达到此代码。
    2. 检查通道的安装文件。您应该看到一个名为channels的列,您应该在这两个设备上都有Giants。如果没有出现问题,那么您只针对一台设备。要修复此错误,您只需删除该应用或手动添加Channels密钥

    3. 即可
    4. 您可能遇到的另一个错误是拒绝了发送推送通知的权限。确保在第二台设备上启用了此功能。要做到这一点,请转到设置 - >通知 - > "您的应用名称" - >将允许通知切换为开启。并选择横幅。

    5. 检查您是否在Xcode中安装了具有这两个设备的正确配置文件。 这是正确的答案。提问者在聊天时发现了这一点。使用这两个设备更新配置文件修复了他的问题。
    6. 希望有帮助,朱利安