2017-03-31 8 views
-1

) "shared()"메소드가 어떤 이유로 인식되지 않아 내 앱 코드가 컴파일되지 않습니다. 내가 볼 수있는 오류는 다음과 같습니다Urban Airship "오류 : 심볼 메서드를 찾을 수 없습니다."(

error: cannot find symbol method shared() 

내에서 이것을 사용하고 "build.gradle (모듈 : 응용 프로그램)"파일 :

dependencies { 
    ...................... 
    // Urban Airship SDK 
    compile 'com.urbanairship.android:urbanairship-sdk:8.3.+' 
    ...................... 
} 

내가이 "공유()"메소드가 포함 것이라고 생각 Urban Airship SDK 버전 8.3. +에서 내가 부르고있다. 나는 그들이 제공하는 도시 비행선 샘플 앱은 "공유()"방법은 https://github.com/urbanairship/android-library/blob/master/urbanairship-sdk/src/main/java/com/urbanairship/UAirship.java에 선언 볼 때 : 이유에 대한

/** 
* Returns the shared UAirship singleton instance. This method will block 
* until airship is ready. 
* 
* @return The UAirship singleton. 
* @throws IllegalStateException if takeoff is not called prior to this method. 
*/ 
@NonNull 
public static UAirship shared() { 
    synchronized (airshipLock) { 
     if (!isTakingOff && !isFlying) { 
      throw new IllegalStateException("Take off must be called before shared()"); 
     } 

     return waitForTakeOff(0); 
    } 
} 

어떤 아이디어 "공유를()"방법은 나를 위해 사용할 수 없습니다? 이것은 내가 내 코드에서 사용하는 방법의 예입니다, 나는 소스 코드의 다른 부분에서 여러 번 전화를하지만 항상 동일 방법은 인식되지 않습니다 :

String appid=PushManager.shared().getAPID(); 

감사합니다.

+0

어쨌든 필자는 Urban Airship SDK의 종속 파일에서 "libs/urbanairship-lib-3.3.0.jar"파일을 컴파일 할 때 제대로 작동하고있었습니다. 이제 업그레이드 중이므로 대신 내 종속성에서 사용하고 있습니다. "com.urbanairship.android:urbanairship-sdk:8.3.+ '"을 ​​컴파일하십시오. 이제는 "shared()"메서드가 작동하지 않습니다. Urban Airship Sample 앱에서 사용하는 것으로 알고 있습니다. 예를 들어 https://github.com/urbanairship/android-library/blob/master/urbanairship-sdk/src/main/java/com/urbanairship/UAirship.java : "UA 항공의 비행선 = UAirship.shared();". –

+0

http://docs.urbanairship.com/api/ua/#post-api-custom-events에서이 정보를 읽었습니다 : "Android 5.0 SDK 이전 : PushManager.shared(). setDeviceTagsEnabled (false) ;. Android SDK 5.0 이상 : UAirship.shared(). getPushManager() .setDeviceTagsEnabled (false); ". 문제는 내 도시 코드가 Urban Airship SDK 3.3.0을 사용하고 있었고 지금은 8.3. +로 업그레이드했기 때문에 새로운 Urban 비행선 SDK의 구문을 존중해야한다는 것입니다. –

+0

이 정보는 http://stackoverflow.com/questions/26717398/urbanairship-android-unable-to-getapid에서도 발견되었습니다. 'APID는 더 이상 Urban Airship 5.x 시리즈에서 사용되지 않습니다. 대신 새로운 "채널"식별자가 사용됩니다. APID와 본질적으로 같습니다. ' 그래서 대신 "문자열 appid = PushManager.shared(). getAPID();" 나는 아마도 "String appid = UAirship.shared(). getPushManager(). getChannelId();"를 사용하여 나에게 오류가 발생하지 않으며 질문에서 언급 한 "shared()"메서드를 사용하고있다. –

답변

1

3.3 ~ 8.3은 꽤 큰 업데이트입니다. 기본적으로 "apids"대신 "channels"를 사용하지만 본질적으로는 동일하지만 조금 업데이트되었습니다. 또한 개별 모듈에 대한 대부분의 싱글 톤 접근자를 제거하고이를 UAIship 인스턴스로 이동했습니다. 새로운 코드는

UAirship.shared().getPushManager().getChannelId();

내가 migration guide뿐만 아니라 Urban Airship Android Guide에서 보라는 권유를 할 수 있어야합니다. API 변경 외에도 listeningcustomizing push notifications에 대한 변경 사항이 많이있었습니다. 현재 사용자 정의 통보가 필요하지 않지만 이제는 푸시 API 및 비행선 구성을 통해 대부분의 옵션을 제공합니다.