2016-10-09 3 views
0

Ранее я использовал PubNub из справочной службы для публикации обновлений местоположения на Android. Я хочу использовать его для другого проекта и написал простой сервис для тестирования нового API. Однако публикация всегда терпит неудачу, и я не могу точно определить, почему.PubNub, не публикуемый со службы

Вот код услуги:

public class MessageService extends Service { 
    private static final String TAG = "MessageService"; 
    private PubNub pubnub; 
    private Timer timer = new Timer(); 

    public MessageService() { 
     PNConfiguration config = new PNConfiguration(); 
     config.setPublishKey("pub_key_removed_for_privacy"); 
     pubnub = new PubNub(config); 
    } 

    TimerTask task = new TimerTask() { 
     @Override 
     public void run() { 
      pubnub.publish() 
        .channel("demo") 
        .message("hello from service") 
        .async(new PNCallback<PNPublishResult>() { 
         @Override 
         public void onResponse(PNPublishResult result, PNStatus status) { 
          if (status.isError()) { 
           Log.e(TAG, "Publish failed"); 
          } else { 
           Log.d(TAG, "Publish successful"); 
          } 
         } 
        }); 
     } 
    }; 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
     timer.schedule(task, 0, 5000); 

     return START_REDELIVER_INTENT; 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 

     timer.cancel(); 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return binder; 
    } 

    private final IBinder binder = new ServiceBinder(); 

    public class ServiceBinder extends Binder { 
     public MessageService getService() { 
      return MessageService.this; 
     } 
    } 
} 

В MainActivity, я просто называю StartService() и смотреть журналы и я всегда получаю сообщение об ошибке. У меня есть права доступа к интернету и network_state в моем манифесте, и я не могу думать о каких-либо других причинах, почему это не работает. Какие-либо предложения?

+1

@CraigConover Вы можете разместить это в качестве ответа, чтобы я мог отметить его как таковой? –

ответ

1

PubNub Подписка Ключ всегда требуется

Вы инициализацией PubNub только с ключом публикации. subscribe key is always required when you config/init PubNub, даже если вы собираетесь публиковать.

Если вы не инициализировать с помощью ключа подписки, или он является недействительным (опечатка или отключен), то вы получите ответ 400 - Invalid Subscribe Key error при попытке выполнить операцию PubNub (subscribe, publish, history и т.д.)

public MessageService() { 
    PNConfiguration config = new PNConfiguration(); 
    config.setPublishKey("your-pub-key"); 
    config.setSubscribeKey("your-sub-key"); 
    pubnub = new PubNub(config); 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^