9

Próbuję zasubskrybować temat gcm na iOS.Gcm iOS, subskrybuj temat, kod błędu 3004

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

Operacja nie mogła zostać zakończona. (błąd com.google.gcm 3004.)

Nie mogę znaleźć dokumentacji tego kodu błędu w dowolnym miejscu. Przeczytałem również kod źródłowy, gdzie błędy są zdefiniowane i wygląda to tak:

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, 
}; 

kody błędów kończą się na 3003!

Odpowiedz

6

Widziałem to wcześniej, ponieważ nie rozpocząłem GCM przed użyciem GCMPubSub. Tak to powinno rozwiązać to dla ciebie

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

To właśnie ja brakowało. Wielkie dzięki! – Siamaster

+0

Mam również ten problem i to nie rozwiązało mojego kodu błędu 3004 – oronbz

+0

dzięki! Uwaga dla każdego, kto nie zwraca uwagi na 'GCMService' i' GGLInstanceID': dwa są różne! – wangii

1

Problemem dla mnie było to, że nie można nawet nazwać GCMPubSub.sharedInstance() aż zadzwonisz GCMService.sharedInstance().startWithConfig(config) więc nie można zapisać GCMPubSub.shareInstance() jako własność zanim faktycznie dzwoni subscribeWithToken