9

Sto tentando di iscrivermi a un argomento gcm su iOS.Gcm iOS, iscriversi all'argomento, codice di errore 3004

GCMPubSub.sharedInstance().subscribeWithToken(registrationId, topic: "/topics/mytopic", options: nil) { error in 
    print(error.localizedDescription) 
} 

Impossibile completare l'operazione. (com.google.gcm errore 3004.)

Non riesco a trovare una documentazione per questo codice di errore ovunque. Ho anche letto il codice sorgente in cui sono definiti gli errori e sembra che questo: i codici

typedef NS_ENUM(NSUInteger, GCMServiceErrorCode) { 
    /** 
    * HTTP errors. 
    */ 

    // InvalidRequest -- Some parameters of the request were invalid. 
    kGCMServiceErrorCodeInvalidRequest = 0, 

    // Auth Error -- GCM couldn't validate request from this client. 
    kGCMServiceErrorCodeAuthentication = 1, 

    // NoAccess -- InstanceID service cannot be accessed. 
    kGCMServiceErrorCodeNoAccess = 2, 

    // Timeout -- Request to InstanceID backend timed out. 
    kGCMServiceErrorCodeTimeout = 3, 

    // Network -- No network available to reach the servers. 
    kGCMServiceErrorCodeNetwork = 4, 

    // OperationInProgress -- Another similar operation in progress, 
    // bailing this one. 
    kGCMServiceErrorCodeOperationInProgress = 5, 

    // Unknown error. 
    kGCMServiceErrorCodeUnknown = 7, 

    /** 
    * Upstream Send errors 
    */ 

    // Upstream send not available (e.g. network issues) 
    kGCMServiceErrorCodeUpstreamServiceNotAvailable = 1001, 

    // Invalid send parameters. 
    kGCMServiceErrorCodeInvalidParameters = 1002, 

    // Invalid missing to. 
    kGCMServiceErrorCodeMissingTo = 1003, 

    // GCM could not cache the message for sending. 
    kGCMServiceErrorSave = 1004, 

    // Message size exceeded (size > 4KB). 
    kGCMServiceErrorSizeExceeded = 1005, 

    /** 
    * GCM Connect errors. 
    */ 

    // GCM already connected with the client. 
    kGCMServiceErrorCodeAlreadyConnected = 2001, 

    /** 
    * PubSub errors. 
    */ 

    // Topic already subscribed to. 
    kGCMServiceErrorCodePubSubAlreadySubscribed = 3001, 

    // Topic already unsubscribed from. 
    kGCMServiceErrorCodePubSubAlreadyUnsubscribed = 3002, 

    // Invalid topic name, does not match the topic regex "/topics/[a-zA-Z0-9-_.~%]+" 
    kGCMServiceErrorCodePubSubInvalidTopic = 3003, 
}; 

errore finiscono in 3003!

risposta

6

Ho visto questo prima perché non ho avviato GCM prima di utilizzare GCMPubSub. Quindi questo dovrebbe risolvere il problema per voi

var config = GCMConfig.defaultConfig() 
// Note you should only call start once during the lifetime of your app. 
GCMService.sharedInstance().startWithConfig(config) 
GCMPubSub.sharedInstance().subscribeWithToken(registrationId, topic: "/topics/mytopic", options: nil) { error in 
    print(error.localizedDescription) 
} 
+0

che era quello che perse. Molte grazie! – Siamaster

+0

Ho anche questo problema e questo non ha risolto il mio codice di errore 3004 – oronbz

+0

grazie! Nota a tutti coloro che non prestano attenzione a 'GCMService' e' GGLInstanceID': i due sono diversi! – wangii

1

Il problema per me era che non si può nemmeno chiamare GCMPubSub.sharedInstance() fino alla chiamata GCMService.sharedInstance().startWithConfig(config) quindi non è possibile memorizzare GCMPubSub.shareInstance() come una proprietà prima di richiamare subscribeWithToken