【问题标题】:UrbanAirship Notification Implementaion in AndroidAndroid中的Urban Airship通知实现
【发布时间】:2025-12-24 18:10:10
【问题描述】:

我正在尝试构建测试应用程序来集成城市飞艇通知。我正在关注 https://docs.urbanairship.com/platform/android/#getting-startedhttps://michiganlabs.com/2014/01/31/push-notification-urban-airship/ 并相应地在 FCM 中注册我的新项目。我还在 urbanairship 中使用 API 密钥和发件人 ID 注册了我的包裹。

以下是 Android Manifest 的代码:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="jss.urabn">
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="android.permission.INTERNET"/>


    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <!-- Autopilot calls takeOff without the need to override the Application -->
        <meta-data android:name="com.urbanairship.autopilot"
            android:value="com.urbanairship.Autopilot"/>

        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>


    </application>

主要活动代码

package jss.urabn;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;

import com.urbanairship.AirshipConfigOptions;
import com.urbanairship.UAirship;
import com.urbanairship.push.PushManager;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        AirshipConfigOptions options = AirshipConfigOptions.loadDefaultOptions(this);
                options.developmentAppKey = 'Your development app key';
                options.productionAppKey = 'Your production app key';
                options.inProduction = false;




    }
}

我在 loaddefaultoptions 方法上没有收到错误(无法解析方法)。

任何人都可以指导。

【问题讨论】:

    标签: java android firebase-cloud-messaging urbanairship.com


    【解决方案1】:

    由于您使用的是 Autopilot,它将直接从 airshipconfig.properties 文件中提取选项。如果您尝试手动自定义选项,则必须在自定义 Autopilot 类中或通过覆盖主应用程序来执行此操作。不在您上面的 MainActivity 中。

    在您的清单中:

     <meta-data
            android:name="com.urbanairship.autopilot"
            android:value="cjss.urabn.SampleAutopilot"/>
    

    然后定义一个 AutoPilot 类:

    package jss.urabn;
    
    public class SampleAutopilot extends Autopilot {
    
        @Override
        public void onAirshipReady(UAirship airship) {
             airship.getPushManager().setUserNotificationsEnabled(true);
        }
    
        @Nullable
        @Override
        public AirshipConfigOptions createAirshipConfigOptions(@NonNull Context context) {
            AirshipConfigOptions options = new AirshipConfigOptions.Builder()
                    .applyDefaultProperties(context)
                    .setInProduction(!BuildConfig.DEBUG)
                    .setDevelopmentAppKey("Your Development App Key")
                    .setDevelopmentAppSecret("Your Development App Secret")
                    .setProductionAppKey("Your Production App Key")
                    .setProductionAppSecret("Your Production App Secret")
                    .setNotificationAccentColor(ContextCompat.getColor(context, R.color.color_accent))
                    .setNotificationIcon(R.drawable.ic_notification)
                    .build();
    
            return options;
        }
    }
    

    AirshipConfig 类已更改为不可变类。您知道如何使用构建器来定义它。方法“loadDefaultOptions”映射到构建器“applyDefaultProperties”。

    【讨论】: