Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 为什么parse.com的推送只能到达一台设备?_Ios_Swift_Parse Platform_Push Notification - Fatal编程技术网

Ios 为什么parse.com的推送只能到达一台设备?

Ios 为什么parse.com的推送只能到达一台设备?,ios,swift,parse-platform,push-notification,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

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

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()
问题是,当我发送push时,只有一个设备接收到它。出于测试目的,我将第二个设备连接到Xcode,但它不接收推送消息

对于安装,我使用了开发证书


开发证书有什么限制吗?或者我做错了什么?

这里有几件事你应该记住

  • 在App Delegate中为设备注册推送通知是一种很好的做法。你的方法决不是错的,只是你通常在App委托中这样做(参见解析文档)
  • 您不能使用模拟器接收推送通知。你需要一个真正的设备
  • 现在,我们来看看哪里出了问题

  • 在Prase仪表板中,您应该看到一个名为installations的类。在那里你应该有两个设备。如果只看到一个设备,则表示仅注册了第一个设备。若要修复此问题,可以将代码移动到应用程序委托,请重新运行程序或设置断点以查看它是否达到此代码
  • 检查通道的安装文件。您应该看到一个名为channels的专栏,在那里您应该有两个设备的巨人。如果这里没有什么问题,你只瞄准了一台设备。要修复此错误,您只需删除应用程序或手动添加
    频道
    键即可

  • 您可能遇到的另一个错误是,您拒绝了发送推送通知的权限。确保在第二台设备上启用了此功能。要执行此操作,请转到设置->通知->您的应用程序名称->切换允许通知以打开。并选择横幅为例

  • 检查您是否在包含这两个设备的Xcode中安装了正确的配置文件这是正确的答案。询问者在聊天时发现了这一点。用两台设备更新配置文件修复了他的问题。

  • 希望能有所帮助,Julian

    你在Parse上的Push Delivery报告中看到了什么?它报告了一个发送的Push,所以你发送了一个Push,你希望它被发送到两个设备??是的,因为我针对的是所有设备,但是推送报告清楚地显示,您的通知只发送给一个。因此,您在安装中注册了两个设备?是的,我在解析安装表中看到了这两个设备,我通过比较应用程序和表中的设备令牌进行了检查。如何发送推送?代码还是面板?我尝试了两种方法-使用以下代码的内部面板和内部应用程序,两次只有一台设备接收到消息