2016-12-27 66 views
0

我正在使用此插件與cordova:cordova-plugin-firebase 0.1.18「Google Firebase Plugin」其在Android上的工作正常,也在ios上令牌的使用方法Cordova Firebase插件 - 在iOS上的通知欄中未顯示通知

window.FirebasePlugin.getToken 

但通知,通知欄不來抵禦它的前景或背景回調的通知永遠不會使用方法

window.FirebasePlugin.onNotificationOpen 

在服務器端我張貼這樣,

def sendNotfMessage(def registrationIds,def body,def title){ 
      def data = [:] 
      data['body']=body 
      data['title']=title 
      data['icon']="myicon" 
      data['sound']="mySound" 
      def postJson = [:] 
      postJson['priority'] = "high" 
      postJson['notification'] = data 
      postJson['registration_ids']=registrationIds 
      return sendFcmNotf(postJson) 
     } 


def sendFcmNotf(def postJson){ 

    HttpTransport transport = new NetHttpTransport() 
    HttpRequest request = transport.createRequestFactory().buildPostRequest(new GenericUrl("https://fcm.googleapis.com/fcm/send"), new JsonHttpContent(new JacksonFactory(), postJson)); 
    HttpHeaders reqHeaders = new HttpHeaders() 
    reqHeaders.setAuthorization("key=${grailsApplication.config.android.fcm.api.key}") 
    reqHeaders.setAccept("application/json") 
    reqHeaders.setContentType("application/json") 

    request.setHeaders(reqHeaders) 

    request.setUnsuccessfulResponseHandler(new HttpBackOffUnsuccessfulResponseHandler(new ExponentialBackOff.Builder() 
      .setInitialIntervalMillis(500) 
      .setMaxElapsedTimeMillis(900000) 
      .setMaxIntervalMillis(6000) 
      .setMultiplier(1.5) 
      .setRandomizationFactor(0.5) 
      .build() 
      )) 

    try { 


     HttpResponse response = request.execute(); 

     InputStream is = response.getContent() 
     BufferedReader br = new BufferedReader(new InputStreamReader(is)) 

     StringBuilder sb = new StringBuilder(); 

     String line = null; 
     try { 
      while ((line = br.readLine()) != null) { 
       sb.append(line); 
      } 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      try { 
       is.close(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
     ObjectMapper mapper = new ObjectMapper() 
     Map<String, Object> responseMap = mapper.readValue(sb.toString(), new TypeReference<Map<String, Object>>(){}) 

     // Process response JSON per https://firebase.google.com/docs/cloud-messaging/server#response 
     if(responseMap && (responseMap['failure'] != 0 || responseMap['canonical_ids'] != 0)){ 
      if(responseMap['message_id'] && responseMap['registration_id']){ 

       log.info "New push token, setting to ${responseMap['registration_id']}" 

       // TODO Notify backend that token has changed, i.e. update 

      } 

     }else{ 

      def results = responseMap['results'] 

      if(results){ 

       results.each{ 

        if(it['error']){ 

         if(it['error'] == "NotRegistered"){ 

          log.info 'NotRegistered, updating AppToken to null' 

          // TODO Notify backend this token is no longer valid, i.e. delete 

         } 
        } 

       } 

      } 

     } 


     return responseMap 

    }catch(HttpResponseException e){ 

     log.error "Error: ${e.toString()}" 

     return (['SC' : e.getStatusCode(), 'M' : e.getStatusMessage() ]) 

    } 
} 
} 
+0

我明白了,其實我想在console.firebase.google.com上傳APNs證書謝謝大家 –

+1

你應該繼續[回答你自己的問題](http://stackoverflow.com/help/self-回答)。 :) –

回答