由于某种原因,“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();
谢谢。
答案 0 :(得分:1)
3.3到8.3是相当大的更新。我们现在使用“渠道”而不是“apids”,基本上是相同的东西,但已经更新了一点。我们还删除了单个模块的大多数单例访问器,并将它们移动到UAirship实例。新代码应该是
。UAirship.shared()getPushManager()getChannelId();
我建议您查看Urban Airship Android Guide以及migration guide。除了API更改之外,我们对如何listening和customizing push notifications进行了大量更改。虽然现在通过我们的推送API和飞艇配置提供大多数选项,但自定义通知并不是必需的。