Urban Airship“错误:找不到符号方法共享()”

时间:2017-03-31 16:19:55

标签: android urbanairship.com

由于某种原因,“shared()”方法无法被识别,这阻止了我的应用程序的代码编译。我看到的错误是:

error: cannot find symbol method shared()

我在“build.gradle(Module:app)”文件中使用它:

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

我认为这个“shared()”方法将包含在我正在调用的Urban Airship SDK版本8.3。+中。当我看到他们提供的Urban Airship Sample应用程序时,在https://github.com/urbanairship/android-library/blob/master/urbanairship-sdk/src/main/java/com/urbanairship/UAirship.java声明了一个“shared()”方法:

/**
 * 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);
    }
}

关于为什么“shared()”方法无法使用的任何想法?这是我在我的代码中如何使用它的一个例子,我从源代码的不同部分多次调用它,但它始终是相同的,该方法无法识别:

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

谢谢。

1 个答案:

答案 0 :(得分:1)

3.3到8.3是相当大的更新。我们现在使用“渠道”而不是“apids”,基本上是相同的东西,但已经更新了一点。我们还删除了单个模块的大多数单例访问器,并将它们移动到UAirship实例。新代码应该是

  。

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

我建议您查看Urban Airship Android Guide以及migration guide。除了API更改之外,我们对如何listeningcustomizing push notifications进行了大量更改。虽然现在通过我们的推送API和飞艇配置提供大多数选项,但自定义通知并不是必需的。