Show Menu
主题×

Places 扩展

“地点”扩展允许您根据用户的位置采取行动。 此扩展是Places Query Service API的接口。 通过侦听包含GPS坐标和地理区域事件的事件,此扩展将调度由规则引擎处理的新事件。 Places扩展还检索并提供从API检索的应用程序数据的最近POI的列表。 由API返回的区域存储在缓存和持久化中,这允许有限的脱机处理。

在Adobe Experience Platform Launch中安装Places扩展

  1. In Experience Platform Launch, click the Extensions tab.
  2. 在选项 Catalog 卡上,找到扩 Places 展名并单击 Install ​。
  3. 选择要在此属性中使用的地点库。 这些库将在您的应用程序中访问。
  4. 单击 Save ​。
    单击时, Save Experience Platform SDK会在您选择的库中搜索Places Services中的POI。 在您构建应用程序时,库下载中不包括POI数据,但基于位置的POI子集在运行时下载到最终用户的设备,并基于用户的GPS坐标。
  5. 完成发布过程以更新SDK配置。
    有关在Experience Platform Launch中发布的更多信息,请参阅 发布

Configure the Places extension

将Places扩展添加到您的应用程序

您可以将Places扩展添加到Android和iOS应用程序。

Android

要使用Java将Places扩展添加到应用程序,请执行以下操作:
  1. 使用应用程序的Gradle文件将Places扩展添加到您的项目。
    implementation 'com.adobe.marketing.mobile:places:1.+'
    implementation 'com.adobe.marketing.mobile:sdk-core:1.+'
    
    
  2. 在应用程序的主活动中导入“地点”扩展。
    import com.adobe.marketing.mobile.Places;
    
    

iOS

要使用Objective-C或Swift将Places扩展添加到您的应用程序,请执行以下操作:
  1. 将Places和 Mobile Core Libraries添加到项目。 您需要将以下窗格添加到您的 Podfile :
    pod 'ACPPlaces', '~> 1.0'
    pod 'ACPCore', '~> 2.0'    # minimum Core version for Places is 2.0.3
    
    
    或者,如果您不使用Cocoapod,则可以从Github上的发布页面手动包含Mobile Core和 Places库
  2. 更新您的Cocopad:
    pod update
    
    
  3. 打开Xcode,在AppDelegate类中,导入核心和地点标题:
    Objective-C
    #import "ACPCore.h"
    #import "ACPPlaces.h"
    
    
    Swift
    import ACPCore
    import ACPPlaces
    
    

使用Mobile Core注册Places扩展

您需要在Android和iOS中使用Mobile core注册Places扩展。

Android

在您的应用程序方 OnCreate 法中注册Places扩展:
public class PlacesTestApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        MobileCore.setApplication(this);

        try {
            Places.registerExtension();
            MobileCore.start(null);
        } catch (Exception e) {
            Log.e("PlacesTestApp", e.getMessage());
        }
    }
}

iOS

在您的应用程序方 application:didFinishLaunchingWithOptions: 法中,将Places扩展注册到您的其他SDK注册调用:
Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // make other sdk registration calls
    [ACPPlaces registerExtension];    
    return YES;
}

Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // make other sdk registration calls
    ACPPlaces.registerExtension();
    return true;
}

修改地点会员资格停留时间

位置数据可能会很快变得陈旧,尤其是当设备未接收后台位置更新时。
通过设置配置设置,控制设备上放置会员资格数据的 places.membershipttl 实时时间。 传入的值表示“地点”状态对设备保持有效的秒数。

Android

在调用之前,在 MobileCore.start() 使用必要的更改更新配置的回调中 lifecycleStart :
public class PlacesTestApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        MobileCore.setApplication(this);

        try {
            Places.registerExtension();
            MobileCore.start(new AdobeCallback() {
                @Override
                public void call(Object o) {
                    // switch to your App ID from Launch
                    MobileCore.configureWithAppID("my-app-id");

                    final Map<String, Object> config = new HashMap<>();
                    config.put("places.membershipttl", 30);
                    MobileCore.updateConfiguration(config);

                    MobileCore.lifecycleStart(null);
                }
            });
        } catch (Exception e) {
            Log.e("PlacesTestApp", e.getMessage());
        }
    }
}

iOS

在方法回调的第一行 ACPCore start: ,调用 updateConfiguration:
Objective-C
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    // make other sdk registration calls

    const UIApplicationState appState = application.applicationState;
    [ACPCore start:^{
        [ACPCore updateConfiguration:@{@"places.membershipttl":@(30)}];

        if (appState != UIApplicationStateBackground) {
            [ACPCore lifecycleStart:nil];            
        }
    }];

    return YES;
}

Swift
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    // make other sdk registration calls

    let appState = application.applicationState;            
    ACPCore.start {
        ACPCore.updateConfiguration(["places.membershipttl" : 30])

        if appState != .background {
            ACPCore.lifecycleStart(nil)
        }    
    }

    return true;
}

配置密钥

要在运行时以编程方式更新SDK配置,请使用以下信息更改Places扩展配置值。 有关详细信息,请参 阅配置API参考
必需
描述
places.libraries
为移动应用程序放置扩展库。 它指定移动应用程序支持的库ID和库名称。
places.endpoint
默认的Places Query service端点,用于获取有关库和POI的信息。
places.membershipttl
默认值为3600(一小时内的秒)。 指示设备的“放置”会员资格信息将保持有效的时间(以秒为单位)。