首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我用Spring模块实现Robospice时,GCM服务停止工作

当我用Spring模块实现Robospice时,GCM服务停止工作
EN

Stack Overflow用户
提问于 2015-02-09 14:18:36
回答 1查看 319关注 0票数 0

我已经按照google页面(Gcm实施)上的说明实现了一个标准GCM客户端。推送信息在那里起了很大的作用,没什么问题。但是,我在应用程序中实现了Robospice库,GCM停止了工作。我确信,由于Robospice,它不能工作,因为一旦我删除了SpiceManager GCM的代码,它就开始工作了。

通过Robospice模块调用API可以正常工作。这是我关于Robospice服务的声明:

代码语言:javascript
复制
enter<receiver
                  android:name="com.clover.spika.enterprise.chat.services.gcm.GcmBroadcastRe    ceiver"
        android:exported="true"
                android:permission="com.google.android.c2dm.permission.SEND" >
        <intent-filter>
            <action      android:name="com.google.android.c2dm.intent.RECEIVE" />
            <action      android:name="com.google.android.c2dm.intent.REGISTRATION" />

            <category     android:name="com.clover.spika.enterprise.chat.gcm" />
        </intent-filter>
    </receiver>

    <service     android:name="com.clover.spika.enterprise.chat.services.gcm.GcmIntentService" />
    <service
           android:name="com.clover.spika.enterprise.chat.services.robospice.Jackson2   SpiceService"
        android:exported="false" />
    <service    android:name="com.clover.spika.enterprise.chat.services.custom.PoolingServ   ice" /> code here

这是我定制的香料服务:

代码语言:javascript
复制
package com.clover.spika.enterprise.chat.services.robospice;

import java.io.IOException;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;

import org.springframework.http.ContentCodingType;
 import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpMethod;
import org.springframework.http.MediaType;
import org.springframework.http.client.ClientHttpRequest;
import org.springframework.http.converter.FormHttpMessageConverter;
import org.springframework.http.converter.HttpMessageConverter;
import         org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.web.client.RestTemplate;

import android.app.Application;
import android.app.Notification;

import com.octo.android.robospice.SpringAndroidSpiceService;
import com.octo.android.robospice.persistence.CacheManager;
import     com.octo.android.robospice.persistence.exception.CacheCreationException;
import     com.octo.android.robospice.persistence.springandroid.json.jackson.JacksonO    bjectPersisterFactory;

public class Jackson2SpiceService extends SpringAndroidSpiceService {

// private static final int WEBSERVICES_TIMEOUT = 10000;

@Override
public RestTemplate createRestTemplate() {

    RestTemplate restTemplate = new RestTemplate() {

        @Override
        protected ClientHttpRequest createRequest(URI url, HttpMethod method) throws IOException {
            ClientHttpRequest request = super.createRequest(url, method);
            HttpHeaders headers = request.getHeaders();
            headers.setAcceptEncoding(ContentCodingType.ALL);
            return request;
        }
    };

    // bug on http connection for Android < 2.2
    // http://android-developers.blogspot.fr/2011/09/androids-http-clients.html
    // but still a problem for upload with Spring-android on android 4.1
    // System.setProperty("http.keepAlive", "false");

    // // set timeout for requests
    // ClientHttpRequestFactory factory = restTemplate.getRequestFactory();
    // if (factory instanceof HttpComponentsClientHttpRequestFactory) {
    // HttpComponentsClientHttpRequestFactory advancedFactory =
    // (HttpComponentsClientHttpRequestFactory) factory;
    // advancedFactory.setConnectTimeout(WEBSERVICES_TIMEOUT);
    // advancedFactory.setReadTimeout(WEBSERVICES_TIMEOUT);
    // } else if (factory instanceof SimpleClientHttpRequestFactory) {
    // SimpleClientHttpRequestFactory advancedFactory =
    // (SimpleClientHttpRequestFactory) factory;
    // advancedFactory.setConnectTimeout(WEBSERVICES_TIMEOUT);
    // advancedFactory.setReadTimeout(WEBSERVICES_TIMEOUT);
    // }

    MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter();
    FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter();
    // StringHttpMessageConverter stringHttpMessageConverter = new
    // StringHttpMessageConverter();

    List<MediaType> supportedMediaTypes = new ArrayList<MediaType>();
    supportedMediaTypes.add(MediaType.TEXT_HTML);
    supportedMediaTypes.add(MediaType.APPLICATION_JSON);

    // stringHttpMessageConverter.setSupportedMediaTypes(supportedMediaTypes);
    jsonConverter.setSupportedMediaTypes(supportedMediaTypes);

    final List<HttpMessageConverter<?>> listHttpMessageConverters = restTemplate.getMessageConverters();

    listHttpMessageConverters.add(jsonConverter);
    listHttpMessageConverters.add(formHttpMessageConverter);
    // listHttpMessageConverters.add(stringHttpMessageConverter);

    restTemplate.setMessageConverters(listHttpMessageConverters);

    return restTemplate;
}

@Override
public CacheManager createCacheManager(Application application) throws CacheCreationException {

    CacheManager cacheManager = new CacheManager();
    JacksonObjectPersisterFactory jacksonObjectPersisterFactory = new     JacksonObjectPersisterFactory(application);
    cacheManager.addPersister(jacksonObjectPersisterFactory);

    return cacheManager;
}

@Override
public Notification createDefaultNotification() {
    return null;
}

}

有谁知道会有什么问题吗?我可以张贴额外的代码,如果需要的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-11 11:17:57

我已经解决了这个问题,这不是抢劫犯或gcm错误,而是我们的服务器处理中的一件事。

问题是,我们从用户代理头中读取了一些我不知道的值,也没有将其设置为OkHttp客户端。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28411861

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档