2016-10-09 2 views
0

이전에 백그라운드 서비스의 PubNub를 사용하여 Android에 위치 업데이트를 게시했습니다. 다른 프로젝트에서이 API를 사용하고 새로운 API를 테스트하기위한 간단한 서비스를 작성했습니다. 그러나 게시가 항상 실패하고 이유를 정확히 알 수 없습니다. 나는 단순히 startService()를 호출하고 로그를보고 난 항상 실패 메시지를 얻을 수는 MainActivity에서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; 
     } 
    } 
} 

: 여기

서비스 코드입니다. 내 매니페스트에서 internet 및 network_state 권한을 가지고 있으며 이것이 작동하지 않는 다른 이유를 생각할 수 없습니다. 어떤 제안? PubNub 키를 구독

+1

@CraigConover 답변으로 게시하여 답변으로 게시 할 수 있습니까? –

답변

1

은 항상 당신 만 공개 키로 PubNub를 초기화하는

필요합니다. subscribe key is always required when you config/init PubNub, 게시하려는 경우에도 마찬가지입니다.

당신이 PubNub 작업 (subscribe, publish, history 등)

을 실행하려고 할 때 당신은 400 - Invalid Subscribe Key error 응답을 얻을 것이다 당신은 구독 키 init을하지 않는, 또는 무효 (오타 또는 비활성화) 인 경우
public MessageService() { 
    PNConfiguration config = new PNConfiguration(); 
    config.setPublishKey("your-pub-key"); 
    config.setSubscribeKey("your-sub-key"); 
    pubnub = new PubNub(config); 
}