gpt4 book ai didi

android - 使用 Urban Airship 的推送通知在第一次启动时将 apID 返回为 null

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:32:15 25 4
gpt4 key购买 nike

我已经成功地将 Urban Airship 推送通知集成到我的 android 应用程序中。我在这里遇到了一个问题,即 apID 在第一次启动时变为空,然后在第二次启动时,apId 正确出现。

这就是我获取 apId 的方式:

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

这是我用过的类:

public class MyApplication extends Application {

public static SharedPreferences PREFS_TOKEN;
public static final String PREFERENCE = "UrbanAirship";
public static String tokenKey;

@Override
public void onCreate(){
AirshipConfigOptions options = AirshipConfigOptions.loadDefaultOptions(this);
UAirship.takeOff(this, options);
PushManager.enablePush();
Logger.logLevel = Log.VERBOSE;

// use CustomPushNotificationBuilder to specify a custom layout
CustomPushNotificationBuilder nb = new CustomPushNotificationBuilder();

nb.statusBarIconDrawableId = R.drawable.paw;// custom status bar icon

nb.layout = R.layout.notification;
nb.layoutIconDrawableId = R.drawable.paw;// custom layout icon
nb.layoutIconId = R.id.icon;
nb.layoutSubjectId = R.id.subject;
nb.layoutMessageId = R.id.message;

// customize the sound played when a push is received
// nb.soundUri =
// Uri.parse("android.resource://"+this.getPackageName()+"/"
// +R.raw.cat);

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

Logger.info("My Application onCreate - App APID: " + apid);

PREFS_TOKEN = this.getSharedPreferences(PREFERENCE,
Context.MODE_PRIVATE);
Editor edit = PREFS_TOKEN.edit();

if (apid != null && apid != "") {
edit.putString(PREFERENCE, apid);
edit.commit();
} else {
edit.putString(PREFERENCE, apid);
edit.commit();
}

tokenKey = PREFS_TOKEN.getString(PREFERENCE, "");
System.out.println("---------- - App APID: " + tokenKey);

PushManager.shared().setNotificationBuilder(nb);
PushManager.shared().setIntentReceiver(IntentReceiver.class);
}
}

我还有一个 IntentReceiver 类。感谢您的帮助。

最佳答案

我发现原因是延迟,要获取 apId,需要一些时间,因此,在您的 IntentReceiver 类中,您必须等待 `PushManager.ACTION_REGISTRATION_FINISHED 触发。从那里,您可以获得 apId:

if (action.equals(PushManager.ACTION_REGISTRATION_FINISHED)) {
Log.i(logTag,"Registration complete. APID:" + intent.getStringExtra(PushManager.EXTRA_APID)+ ". Valid: "+ intent.getBooleanExtra( PushManager.EXTRA_REGISTRATION_VALID, false));
// Notify any app-specific listeners
String apid = PushManager.shared().getAPID();


Intent launch = new Intent(UAirship.getPackageName()+ APID_UPDATED_ACTION_SUFFIX);
UAirship.shared().getApplicationContext().sendBroadcast(launch);

}

关于android - 使用 Urban Airship 的推送通知在第一次启动时将 apID 返回为 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19827850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com