测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可证 | 自定义 |
发布最新发布 | 2015年3月 |
由 James Lafa,Jens Ravens 维护。
使用 Minodes Interactions SDK 可以为您的应用程序添加强大的基于位置的功能,为客户提供更丰富、更具互动性的购物体验。根据客户的位置、个人资料和偏好向他们发送消息,或基于 iBeacon 技术构建新功能。
为了集成我们的解决方案,您需要向 SDK 提供一个 应用程序令牌。要获取您的应用程序令牌,请联系我们。
为了向您的用户发送推送通知,我们需要您提供一份 苹果推送证书(只需 发送电子邮件给我们即可)。它必须是 .p12 文件,且不应有密码。证书也必须支持生产环境。
CocoaPods 是向您的项目中添加 Minodes SDK 的推荐方式。
pod 'MinodesInteractionsSDK', '~> 0.1.0'
pod install
安装 pod。为了确保您的应用程序可以在后台检测信标并接收推送通知,您需要至少为您的应用程序目标启用以下后台模式:
在目标信息窗格中,添加一个字符串属性 'NSLocationAlwaysUsageDescription',并描述您的应用程序将如何使用位置服务(例如,“您的位置将被用于增强您在特定位置的信息和优惠中使用位置服务的购物体验。”)。当请求用户在后台访问位置服务时,将显示此文本。此设置对于启用信标的后台监控是必要的。
在选择项目设置时,选择“构建设置”选项卡,然后在“其他链接器标志”中添加:-ObjC
以下代码可用来将 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>
可选:为了在定义营销活动时使用自定义标签(例如用户名、年龄等),您需要向我们发送UserData。 UserData是一个键值对的字典;键是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
类型,您可以使用以下参数来处理当前的操作
以下示例中,您可以看到一个类型为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"
}
}
在您的应用中显示默认警报视图。
在外部应用中打开URL(例如,http://google.com将在Safari中打开)。
在应用程序内部显示网页。这必须由应用程序自己处理。
为了显示内部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 标识符,如下图中所示