2016-04-09 12 views
1

ローカルAndroidスタジオにGoogle Cloud Messagingセットアップを適用したApp Engineバックエンドがあります。Androidスタジオの既存のApp Engineバックエンドサーバーに新しいエンドポイントを追加します。

次のようにそれは、元のエンドポイントがあります。

  • メッセージングエンドポイント
  • 登録エンドポイント

私は新しいJavaファイルを作成し、以下のようにUserRegistrationと呼ばれる新しいクラスを追加しました:

package com.xxxxx.gcmbackend; 
import com.google.api.server.spi.config.Api; 
import com.google.api.server.spi.config.ApiMethod; 
import com.google.api.server.spi.config.ApiNamespace; 
import com.google.api.server.spi.response.CollectionResponse; 

import java.util.List; 
import java.util.logging.Logger; 
import javax.inject.Named; 

import static com.xxxxxx.gcmbackend.OfyService.ofy; 

@Api(
     name = "register", 
     version = "v1", 
     namespace = @ApiNamespace(
       ownerDomain = "gcmbackend.xxxxx.com", 
       ownerName = "gcmbackend.xxxxx.com", 
       packagePath="" 
     ) 
) 


public class UserRegistrationEndpoint { 
    private static final Logger log = Logger.getLogger(RegistrationEndpoint.class.getName()); 
    @ApiMethod(name = "register") 
    public void registerDevice(@Named("regId") String regId, @Named("username") String username, @Named("phone") String phone) { 
     if(findRecord(regId) != null) { 
      log.info("Device " + regId + " already registered, skipping register"); 
      return; 
     } 
     RegistrationRecord record = new RegistrationRecord(); 
     record.setRegId(regId); 
     record.setUsername(username); 
     record.setPhone(phone); 
     ofy().save().entity(record).now(); 
    } 
    private RegistrationRecord findRecord(String regId) { 
     return ofy().load().type(RegistrationRecord.class).filter("regId", regId).first().now(); 
    } 
} 

ただし、展開すると表示されませんこのエンドポイントはAPIエクスプローラにあります。 Google Cloud MessagingでApp Engineバックエンドに新しい作業エンドポイントを追加するにはどうすればよいですか?

答えて

1

既存のコード構造を調べると、すべての新しいAPIをweb.xmlファイルに追加する必要があることが分かりました。新しいエンドポイントを次のように追加しました:

<?xml version="1.0" encoding="utf-8"?> 
<web-app xmlns="http://java.sun.com/xml/ns/javaee" version="2.5"> 
    <filter> 
     <filter-name>ObjectifyFilter</filter-name> 
     <filter-class>com.googlecode.objectify.ObjectifyFilter</filter-class> 
    </filter> 
    <filter-mapping> 
     <filter-name>ObjectifyFilter</filter-name> 
     <url-pattern></url-pattern> 
    </filter-mapping> 
    <servlet> 
     <servlet-name>SystemServiceServlet</servlet-name> 
     <servlet-class>com.google.api.server.spi.SystemServiceServlet</servlet-class> 
     <init-param> 
      <param-name>services</param-name> 
      <param-value>com.xxxxx.gcmbackend.RegistrationEndpoint, com.xxxxx.gcmbackend.MessagingEndpoint, com.xxxxx.gcmbackend.UserRegistrationEndpoint</param-value> 
     </init-param> 
    </servlet> 
    <servlet-mapping> 
     <servlet-name>SystemServiceServlet</servlet-name> 
     <url-pattern>/_ah/spi/*</url-pattern> 
    </servlet-mapping> 

    <welcome-file-list> 
     <welcome-file>index.html</welcome-file> 
    </welcome-file-list> 
</web-app> 
関連する問題