This repository was archived by the owner on Jun 13, 2023. It is now read-only.
  
  
  - 
          
- 
                Notifications
    You must be signed in to change notification settings 
- Fork 132
    This repository was archived by the owner on Jun 13, 2023. It is now read-only.
  
  
iOS Swift LiveQuery not receiving events #105
Copy link
Copy link
Closed
Description
Hello I have a subscription to a query that signals the subscribed event but does not signal any other event.
When I run the following code I get the "subbed" message. And on my remote server I can see the following logs.
2017-03-12T22:31:11.565923+00:00 app[web.1]: �[36mverbose�[39m: Push Response : "{\"op\":\"subscribed\",\"clientId\":9,\"requestId\":1}"
2017-03-12T22:31:11.566125+00:00 app[web.1]: �[36mverbose�[39m: Create client 9 new subscription: 1
2017-03-12T22:31:11.566293+00:00 app[web.1]: �[36mverbose�[39m: Current client number: 1
Code:
Swift code:
class ActiveLetterLoader {
    var subscription: Subscription<RemoteLetter>?
    let liveQueryClient = ParseLiveQuery.Client()
    
    init() {
        self.register()
    }
    
    
    func register() {
        RemoteLetter.registerSubclass()
        
        let remoteQ: PFQuery<RemoteLetter>  = RemoteLetter.query()!.whereKey("oid", notEqualTo: "whatever") as! PFQuery<RemoteLetter>
        remoteQ.findObjectsInBackground { (objects, errors) in
            print(objects)
            print(errors)
        }
        self.subscription = liveQueryClient.subscribe(remoteQ).handleSubscribe { [weak self]  (_) in
            print("Subbed")
            }.handleEvent { [weak self] (_, event) in
                self?.handleEvent(event: event)
        }
        
    }
    
    func handleEvent(event: Event<RemoteLetter>) {
        // Make sure we're on main thread
        if Thread.current != Thread.main {
            return DispatchQueue.main.async { [weak self] _ in
                self?.handleEvent(event: event)
            }
        }
        
        switch event {
        case .created(let obj),
             .entered(let obj):
            print("Object is entered!")
            
        case .updated(let obj):
            print("Object is updated!")
            
        case .deleted(let obj),
             .left(let obj):
            print("Object is deleted!")
        }
    }  
}
class RemoteLetter: PFObject, PFSubclassing {
    @NSManaged var  oid: NSString?
    @NSManaged var  clat: NSNumber?
    @NSManaged var  clon: NSNumber?
    @NSManaged var  olat: NSNumber?
    @NSManaged var  olon: NSNumber?
    
    override init(){
        super.init()
    }
    
    init(letter: ActiveLetter) {
        super.init()
        self.oid = letter.objectId as NSString
        self.clat = letter.latitude as NSNumber
        self.clon = letter.longitude as NSNumber
        self.olat = letter.original_latitude as NSNumber
        self.olon = letter.original_longitude as NSNumber
        self.acl = make_acl()
    }
    
    func make_acl() -> PFACL{
        let acl = PFACL()
        acl.getPublicReadAccess = true
        acl.getPublicWriteAccess = true
        return acl
    }
    
    class func parseClassName() -> String {
        return "ActiveLetters"
    }
}
A sample object on my remote database
{
    "_id": "A5Y8dPfalr",
    "clat": 51.51613894350632,
    "olon": -0.142,
    "clon": -0.1404333170731588,
    "oid": "51.516/-0.142",
    "olat": 51.516,
    "_wperm": [
        "*"
    ],
    "_rperm": [
        "*"
    ],
    "_acl": {
        "*": {
            "w": true,
            "r": true
        }
    },
    "_created_at": {
        "$date": "2017-03-12T22:10:16.686Z"
    },
    "_updated_at": {
        "$date": "2017-03-12T22:10:16.686Z"
    }
}
I am connecting to a remote database that I set up on Heroku with the parse server example.
The config for that server is
{
  "name": "parse-server-example",
  "version": "1.4.0",
  "description": "An example Parse API server using the parse-server module",
  "main": "index.js",
  "repository": {
    "type": "git",
    "url": "https://github.com/ParsePlatform/parse-server-example"
  },
  "license": "MIT",
  "dependencies": {
    "express": "~4.11.x",
    "kerberos": "~0.0.x",
    "parse": "~1.8.0",
    "parse-server": "~2.3.6"
  },
  "scripts": {
    "start": "node index.js"
  },
  "engines": {
    "node": ">=4.3"
  }
}
Locally my app I am using the following dependancy versions.
- Bolts (1.8.4)
- Bolts-Swift (1.3.0)
- Parse (1.14.2)
- ParseLiveQuery (2.0.0)
- Starscream (2.0.3)
EtgarSH
Metadata
Metadata
Assignees
Labels
No labels