MinodesInteractionsSDK 0.1.0

MinodesInteractionsSDK 0.1.0

测试已测试
语言语言 Obj-CObjective C
许可证 自定义
发布最新发布2015年3月

James LafaJens Ravens 维护。



  • Minodes GmbH 提供

互动 - iOS 的 Minodes SDK

使用 Minodes Interactions SDK 可以为您的应用程序添加强大的基于位置的功能,为客户提供更丰富、更具互动性的购物体验。根据客户的位置、个人资料和偏好向他们发送消息,或基于 iBeacon 技术构建新功能。

要求

应用程序令牌

为了集成我们的解决方案,您需要向 SDK 提供一个 应用程序令牌。要获取您的应用程序令牌,请联系我们

苹果推送证书

为了向您的用户发送推送通知,我们需要您提供一份 苹果推送证书(只需 发送电子邮件给我们即可)。它必须是 .p12 文件,且不应有密码。证书也必须支持生产环境。

在您的应用程序中集成 SDK

CocoaPods 是向您的项目中添加 Minodes SDK 的推荐方式。

  • 将 pod 条目添加到您的 Podfile 中 pod 'MinodesInteractionsSDK', '~> 0.1.0'
  • 通过运行 pod install 安装 pod。

为了确保您的应用程序可以在后台检测信标并接收推送通知,您需要至少为您的应用程序目标启用以下后台模式:

Screenshot

在目标信息窗格中,添加一个字符串属性 'NSLocationAlwaysUsageDescription',并描述您的应用程序将如何使用位置服务(例如,“您的位置将被用于增强您在特定位置的信息和优惠中使用位置服务的购物体验。”)。当请求用户在后台访问位置服务时,将显示此文本。此设置对于启用信标的后台监控是必要的。

Screenshot

在选择项目设置时,选择“构建设置”选项卡,然后在“其他链接器标志”中添加:-ObjC

使用 SDK

以下代码可用来将 SDK 集成到您的应用程序中;将其添加到您希望启动 SDK 的部分(例如,ApplicationDelegate)

[[MINBeaconSDK sharedManager] startSDKWithAppToken:@"app-token"];
[[MINBeaconSDK sharedManager] startMonitoring];
[MINBeaconSDK sharedManager].delegate = self;

您需要用 app-token 替换应用程序令牌(请参阅要求部分)。

要从Minodes后端接收信息,请在准备使用SDK的类中设置遵循协议MINBeaconSDKDelegate的代理,并导入Minodes Beacon SDK管理器

#import <MinodesSDK/MINBeaconSDK.h>

可选:为了在定义营销活动时使用自定义标签(例如用户名、年龄等),您需要向我们发送UserDataUserData是一个键值对的字典;键是CustomTag的标识符,值是在您应用程序中使用该用户的值。

例如,要将用户定义为20岁的男性,请按照以下步骤操作

NSDictionary *dictionary = @{ @"age" : 20,
                              @"gender" : male }    

[MINBeaconSDK sharedManager].userData = dictionary;

无需在启动应用程序时每次都发送UserData。只需在某些值发生变化时才发送。

处理通知

为了与您的用户交互,Minodes Interactions会向他们的设备发送推送通知;这些推送通知将由SDK自动处理。

因此,您需要为用户注册设备通知,转发:push notification token并将每个推送通知转发到SDK。

注册设备

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:
        (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert) categories:nil];

        [[UIApplication sharedApplication] registerUserNotificationSettings:settings];

    } else {
        [[UIApplication sharedApplication] registerForRemoteNotificationTypes:
         (UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
    }
}

-(void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
    [application registerForRemoteNotifications];
}

将推送通知token转发到SDK

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    [[MINBeaconSDK sharedManager] didRegisterForRemoteNotificationsWithDeviceToken:deviceToken];
}

将推送通知转发到SDK

在应用程序在前景运行时转发推送通知

- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {    
    [[MINBeaconSDK sharedManager] didReceiveRemoteNotification:userInfo];
}   

在应用程序在后台运行时转发推送通知,将以下代码添加到方法 application:didFinishLaunchingWithOptions

NSDictionary *notificationDict = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (notificationDict != nil) {
    [[MINBeaconSDK sharedManager] didReceiveRemoteNotification:notificationDict];
}    

处理推送通知及其相应操作

当一项活动与用户匹配时,Interactions后端会将一条推送通知发送到用户的设备以显示一项操作;一项操作可以打开应用程序、打开应用程序的特定页面、外部URL、图片等。

这些操作由SDK自动处理。但是,您也可以在执行操作之前询问用户该项操作是否应该执行(例如在打开外部URL之前请求许可)

示例

- (void)beaconSDK:(MINBeaconSDK *)beaconSDK shouldPerformAction:(MINAction *)action result:(void (^)(MINActionResponse))result
{
    // ask your user and call the callback
    result(MINActionResponseAllow);
}

操作是MINAction类型,您可以使用以下参数来处理当前的操作

  • actionId:操作的ID。
  • type:操作类型(external_urlinternal_urlalertimage)。
  • content:操作的文本。一个字典,包含操作的标题(title)、要显示的消息(message)、操作的URL(url)和图片的URL(url_image)。这些参数是可选的,取决于操作类型。
  • delay:执行操作前的延迟时间。
  • receivedAtTimestamp:收到操作的时间戳。
  • status:操作的当前状态(例如'accepted')。

以下示例中,您可以看到一个类型为external_url的操作(即,在Safari中打开网页)

{
    "app_user_action":
    {
        "id":4784,
        "action_type":"external_url",
        "content":
        {
            "url":"http://www.google.com",
            "message":"Hello world!"
        },
        "delay":0,
        "status":"accepted"
    }
}

不同类型的操作

alert

在您的应用中显示默认警报视图。

external_url

在外部应用中打开URL(例如,http://google.com将在Safari中打开)。

internal_url

在应用程序内部显示网页。这必须由应用程序自己处理。

为了显示内部URL,应用程序必须实现声明以下方法的MINBeaconSDKDelegate协议

-(void)beaconSDK:(MINBeaconSDK *)beaconSDK handleUrl:(NSURL *)url

每次应用程序应该处理一个URL时,SDK都会调用此代理方法。

例如,要在应用中的UIWebView中显示网页

-(void)beaconSDK:(MINBeaconSDK *)beaconSDK handleUrl:(NSURL *)url{
    NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url
                                                  cachePolicy: NSURLRequestUseProtocolCachePolicy
                                              timeoutInterval:30];
    [self.webView loadRequest:request];
}

例如,要显示您使用自定义URL方案定义的应用程序的特定页面(例如 "myapp://users/123"),您可以根据URL执行 segue 以显示网页视图或视图控制器。

- (void)beaconSDK:(MINBeaconSDK *)beaconSDK handleUrl:(NSURL *)url {
    if([url.scheme isEqualToString:@"http"] || [url.scheme isEqualToString:@"https"]) {
        // Perform a segue that opens a webview
        [self performSegueWithIdentifier:@"webview" sender:self];
    } else if ([url.scheme isEqualToString:@"myapp"]) {
        // Perform a segue to open a UIViewController depending on the host of the URL (In "myapp://users/123", users is the host of the URL)
        [self performSegueWithIdentifier:url.host sender:self];
    }
}

图片

在 UIImageView 中打开图像。图像的 URL 必须由应用程序在 MINBeaconSDKDelegate 的 [beaconSDK: handleImage:] 方法中处理。

- (void)beaconSDK:(MINBeaconSDK *)beaconSDK handleImage:(UIImage *)image {
   if(image != nil) {
       UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
   }
}

在用户手机上测试操作

Minodes Interactions 允许用户在自己的手机上尝试操作,这需要将用户的手机与其 Minodes Interactions 用户帐户链接起来。为了在应用程序中支持此功能,您需要 Minodes 提供的 URL 方案URL 标识符。请 联系我们 以获取这些信息。

要将此功能实现到您的应用程序中,请在应用程序的代理中添加以下方法,并用您自己的 URL 方案更新 app_scheme

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url
 sourceApplication:(NSString *)sourceApplication annotation:(id)annotation {
    if ([[url scheme] isEqualToString:@"app_scheme"]) {
        // Forward URL to the SDK
        [[MINBeaconSDK sharedManager] activateTestUser:url];
        return YES;
    }
    return NO;
}

在以下代理方法中返回 YES 以在您的应用程序中打开 URL

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {    
    // Return YES to open URL in your app
    return YES;
}

在您的应用程序的 Info.plist 文件中添加您的 URL 方案和 URL 标识符,如下图中所示

Screenshot