//
|
// MagicWindowApi.h
|
// Created by 刘家飞 on 14/11/18.
|
// Copyright (c) 2014年 MagicWindow. All rights reserved.
|
//
|
|
#import <Foundation/Foundation.h>
|
#import <UIKit/UIKit.h>
|
#import "MWCampaignConfig.h"
|
#import <CoreLocation/CoreLocation.h>
|
#import "MWApiObject.h"
|
|
#define DEPRECATED(_version) __attribute__((deprecated))
|
|
/**
|
* 当活动有更新的时候会触发该notification
|
**/
|
#define MWUpdateCampaignNotification @"MWUpdateCampaignNotification"
|
/**
|
* 活动详情页面即将打开的时候会触发
|
**/
|
#define MWWebViewWillAppearNotification @"MWWebViewWillAppearNotification"
|
/**
|
* 活动详情页面关闭的时候会触发
|
**/
|
#define MWWebViewDidDisappearNotification @"MWWebViewDidDisappearNotification"
|
/**
|
* @deprecated This method is deprecated starting in version 3.66
|
* @note Please use @code MWUpdateCampaignNotification @code instead.
|
**/
|
#define MWRegisterAppSuccessedNotification @"MWRegisterAppSuccessedNotification" DEPRECATED(3.66)
|
|
|
typedef void (^ _Nullable CallbackWithCampaignSuccess) (NSString *__nonnull key, UIView *__nonnull view, MWCampaignConfig *__nonnull campaignConfig);
|
typedef void (^ _Nullable CallbackWithCampaignFailure) (NSString *__nonnull key, UIView *__nonnull view, NSString *__nullable errorMessage);
|
typedef BOOL (^ CallbackWithTapCampaign) (NSString *__nonnull key, UIView *__nonnull view);
|
typedef void(^ _Nullable CallBackMLink)(NSURL * __nonnull url ,NSDictionary * __nullable params);
|
typedef NSDictionary * _Nullable (^ CallbackWithMLinkCampaign) (NSString *__nonnull key, UIView *__nonnull view);
|
typedef NSDictionary * _Nullable (^ CallbackWithMLinkLandingPage) (NSString *__nonnull key, UIView *__nonnull view);
|
typedef NSDictionary * _Nullable (^ CallbackWithReturnMLink) (NSString *__nonnull key, UIView *__nonnull view);
|
|
@interface MWApi : NSObject
|
|
/**
|
* 注册app
|
* 需要在 application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 中调用
|
* @param appKey 魔窗后台注册的appkey
|
* @return void
|
*/
|
+ (void)registerApp:(nonnull NSString *)appKey;
|
|
/**
|
* 设置用户基本信息
|
* @param userPhone 用户手机号
|
* @return void
|
*/
|
+ (void)setUserPhone:(nonnull NSString *)userPhone;
|
|
/**
|
* 设置用户基本信息
|
* @param user MWUserProfile对象
|
* @return void
|
*/
|
+ (void)setUserProfile:(nonnull MWUserProfile *)user;
|
|
/**
|
* 退出登录的时候,取消当前的用户基本信息
|
*/
|
+ (void)cancelUserProfile;
|
|
/**
|
* 设置渠道,默认为appStore
|
* @param channel 渠道key
|
* @return void
|
*/
|
+ (void)setChannelId:(nonnull NSString *)channel;
|
|
/**
|
* 设置是否打印sdk的log信息,默认不开启,在release情况下,不要忘记设为NO.
|
* @param enable YES:打开,NO:关闭
|
* @return void
|
*/
|
+ (void)setLogEnable:(BOOL)enable;
|
|
/**
|
* 设置是否抓取crash信息,默认开启.
|
* @param enable YES:打开,NO:关闭
|
* @return void
|
*/
|
+ (void)setCaughtCrashesEnable:(BOOL)enable;
|
|
/**
|
* @deprecated This method is deprecated starting in version 3.9
|
* @note default true
|
**/
|
+ (void)setMlinkEnable:(BOOL)enable DEPRECATED(3.9);
|
|
/**
|
* 用来获得当前sdk的版本号
|
* return 返回sdk版本号
|
*/
|
+ (nonnull NSString *)sdkVersion;
|
|
#pragma mark Campaign
|
/**
|
* 获取UserAgent
|
* 当使用自己的WebView打开活动的时候,需要修改UserAgent(新UserAgent=原UserAgent + SDK的UserAgent),用作数据监测和统计
|
* @param key 魔窗位key
|
* @return SDK的UserAgent
|
*/
|
+ (nullable NSString *)getUserAgentWithKey:(nonnull NSString *)key;
|
|
/**
|
* 获取活动相关配置信息
|
* 适用于pushViewController
|
* @param key 魔窗位key
|
* @param view 展示活动简介的view
|
* @param success callback 当成功获取到该魔窗位上活动的时候会调用这个回调
|
* @param failure callback 当获取到该魔窗位上活动失败的时候会调用这个回调
|
* @return void
|
*/
|
+ (void)configAdViewWithKey:(nonnull NSString *)key withTarget:(nonnull UIView *)view
|
success:(CallbackWithCampaignSuccess)success
|
failure:(CallbackWithCampaignFailure)failure;
|
|
/**
|
* 获取活动相关配置信息
|
* 适用于presentViewController
|
* @param key 魔窗位key
|
* @param view 展示活动简介的view
|
* @param controller 展示活动简介的UIViewController
|
* @param success callback 当成功获取到该魔窗位上活动的时候会调用这个回调
|
* @param failure callback 当获取到该魔窗位上活动失败的时候会调用这个回调
|
* @return void
|
*/
|
+ (void)configAdViewWithKey:(nonnull NSString *)key withTargetView:(nonnull UIView *)view withTargetViewController:(nonnull UIViewController *)controller
|
success:(CallbackWithCampaignSuccess)success
|
failure:(CallbackWithCampaignFailure)failure;
|
|
/**
|
* 获取活动相关配置信息
|
* 适用于所有的UIViewController
|
* @param key 魔窗位key
|
* @param view 展示活动简介的view
|
* @param controller 展示活动简介的UIViewController
|
* @param success callback 当成功获取到该魔窗位上活动的时候会调用这个回调
|
* @param failure callback 当获取到该魔窗位上活动失败的时候会调用这个回调
|
* @param tap callback 当点击该魔窗位上活动的时候会调用这个回调,return YES 允许跳转,NO 不允许跳转
|
* @return void
|
*/
|
+ (void)configAdViewWithKey:(nonnull NSString *)key withTargetView:(nonnull UIView *)view withTargetViewController:(nullable UIViewController *)controller
|
success:(CallbackWithCampaignSuccess)success
|
failure:(CallbackWithCampaignFailure)failure
|
tap:(nullable CallbackWithTapCampaign)tap;
|
|
/**
|
* 获取活动相关配置信息
|
* 适用于所有的UIViewController
|
* @param key 魔窗位key
|
* @param view 展示活动简介的view
|
* @param controller 展示活动简介的UIViewController
|
* @param success callback 当成功获取到该魔窗位上活动的时候会调用这个回调
|
* @param failure callback 当获取到该魔窗位上活动失败的时候会调用这个回调
|
* @param tap callback 当点击该魔窗位上活动的时候会调用这个回调,return YES 允许跳转,NO 不允许跳转
|
* @param mLinkHandler callback 当活动类型为mlink的时候,点击的该活动的时候,会调用这个回调,return mlink需要的相关参数
|
* @return void
|
*/
|
+ (void)configAdViewWithKey:(nonnull NSString *)key withTargetView:(nonnull UIView *)view withTargetViewController:(nullable UIViewController *)controller
|
success:(CallbackWithCampaignSuccess)success
|
failure:(CallbackWithCampaignFailure)failure
|
tap:(nullable CallbackWithTapCampaign)tap
|
mLinkHandler:(nullable CallbackWithMLinkCampaign)mLinkHandler;
|
|
/**
|
* 获取活动相关配置信息
|
* 适用于所有的UIViewController
|
* @param key 魔窗位key
|
* @param view 展示活动简介的view
|
* @param controller 展示活动简介的UIViewController
|
* @param success callback 当成功获取到该魔窗位上活动的时候会调用这个回调
|
* @param failure callback 当获取到该魔窗位上活动失败的时候会调用这个回调
|
* @param tap callback 当点击该魔窗位上活动的时候会调用这个回调,return YES 允许跳转,NO 不允许跳转
|
* @param mLinkHandler callback 当活动类型为mlink的时候,点击的该活动的时候,会调用这个回调,return mlink需要的相关参数
|
* @param mLinkLandingPageHandler callback 当活动类型为mlink landing page的时候,点击的该活动的时候,会调用这个回调,return mlink landing page需要的相关参数
|
* @return void
|
*/
|
+ (void)configAdViewWithKey:(nonnull NSString *)key withTargetView:(nonnull UIView *)view withTargetViewController:(nullable UIViewController *)controller
|
success:(CallbackWithCampaignSuccess)success
|
failure:(CallbackWithCampaignFailure)failure
|
tap:(nullable CallbackWithTapCampaign)tap
|
mLinkHandler:(nullable CallbackWithMLinkCampaign)mLinkHandler
|
mLinkLandingPageHandler:(nullable CallbackWithMLinkLandingPage)landingPageHandler;
|
|
/**
|
* 获取活动相关配置信息,支持A跳到B,B返回A,魔窗位即代表A
|
* 适用于所有的UIViewController
|
* @param key 魔窗位key
|
* @param view 展示活动简介的view
|
* @param controller 展示活动简介的UIViewController
|
* @param callBackMLinkKey : mLink key ,当从B返回回来的时候,会根据mLink key来跳转到相应的页面
|
* @param success callback 当成功获取到该魔窗位上活动的时候会调用这个回调
|
* @param failure callback 当获取到该魔窗位上活动失败的时候会调用这个回调
|
* @param tap callback 当点击该魔窗位上活动的时候会调用这个回调,return YES 允许跳转,NO 不允许跳转
|
* @param mLinkHandler callback 当活动类型为mlink的时候,点击的该活动的时候,会调用这个回调,return mlink需要的相关参数
|
* @param mLinkLandingPageHandler callback 当活动类型为mlink landing page的时候,点击的该活动的时候,会调用这个回调,return mlink landing page需要的相关参数
|
* @param MLinkCallBackParamas :callback 当从B返回过来的时候,需要的相关参数
|
* @return void
|
*/
|
+ (void)configAdViewWithKey:(nonnull NSString *)key withTargetView:(nonnull UIView *)view withTargetViewController:(nullable UIViewController *)controller WithCallBackMLinkKey:(nullable NSString *)callBackMLinkKey
|
success:(CallbackWithCampaignSuccess)success
|
failure:(CallbackWithCampaignFailure)failure
|
tap:(nullable CallbackWithTapCampaign)tap
|
mLinkHandler:(nullable CallbackWithMLinkCampaign)mLinkHandler
|
mLinkLandingPageHandler:(nullable CallbackWithMLinkLandingPage)landingPageHandler
|
MLinkCallBackParamas:(nullable CallbackWithReturnMLink)mLinkCallBackParamas;
|
|
/**
|
* 发送展现日志
|
* @param key 魔窗位key
|
* 确定视图显示在window上之后再调用trackImpression,不要太早调用,在tableview或scrollview中使用时尤其要注意
|
*/
|
+ (void)trackImpressionWithKey:(nonnull NSString *)key;
|
|
/**
|
* 判断单个魔窗位上是否有活动
|
* @param mwkey 魔窗位key
|
* @return yes:有处于活跃状态的活动;no:没有处于活跃状态的活动
|
*/
|
+(BOOL)isActiveOfmwKey:(nonnull NSString *)mwkey;
|
|
/**
|
* 批量判断魔窗位上是否有活动
|
* @param mwKeys 魔窗位keys
|
* @return NSArray 有活动的魔窗位keys
|
*/
|
+(nullable NSArray *)mwkeysWithActiveCampign:(nonnull NSArray *)mwKeys;
|
|
/**
|
* 自动打开webView,显示活动
|
* 只有在成功获取到活动信息的时候,该方法才有效
|
* @param key 魔窗位key
|
* @param view 展示活动简介的view
|
* @return void
|
*/
|
+ (void)autoOpenWebViewWithKey:(nonnull NSString *)key withTargetView:(nonnull UIView *)view;
|
|
/**
|
* 判断是否发送webview的相关通知(进入webView,关闭webView)
|
* 只有在成功获取到活动信息的时候,该方法才有效
|
* @param enable YES:打开,NO:关闭。默认状态为NO
|
* @return void
|
*/
|
+ (void)setWebViewNotificationEnable:(BOOL)enable;
|
|
/**
|
* 是否自定义活动详情页面的导航条按钮
|
* @param enable YES:自定义,NO:不自定义。默认状态为NO
|
* @return void
|
*/
|
+ (void)setWebViewBarEditEnable:(BOOL)enable;
|
|
#pragma mark Custom event
|
|
/**
|
* 标识某个页面访问的开始,在合适的位置调用,name不能为空。
|
* @param name 页面的唯一标示,不能为空
|
* @return void
|
*/
|
+ (void)pageviewStartWithName:(nonnull NSString *)name;
|
|
/**
|
* 标识某个页面访问的结束,与pageviewStartWithName配对使用,name不能为空。
|
* @param name 页面的唯一标示,不能为空
|
* @return void
|
*/
|
+ (void)pageviewEndWithName:(nonnull NSString *)name;
|
|
/**
|
* 自定义事件
|
* @param eventId 自定义事件的唯一标示,不能为空
|
* @return void
|
*/
|
+ (void)setCustomEvent:(nonnull NSString *)eventId;
|
|
/**
|
* 自定义事件
|
* @param eventId 自定义事件的唯一标示,不能为空
|
* @param attributes 动态参数,最多可包含9个
|
* @return void
|
*/
|
+ (void)setCustomEvent:(nonnull NSString *)eventId attributes:(nullable NSDictionary *)attributes;
|
|
|
#pragma mark Location
|
/**
|
* 设置经纬度信息
|
* @param latitude 纬度
|
* @param longitude 经度
|
* @return void
|
*/
|
+ (void)setLatitude:(double)latitude longitude:(double)longitude;
|
|
/**
|
* 设置经纬度信息
|
* @param location CLLocation 经纬度信息
|
* @return void
|
*/
|
+ (void)setLocation:(nonnull CLLocation *)location;
|
|
/**
|
* 设置城市编码,以便获取相应城市的活动数据,目前仅支持到地级市
|
* 国家标准的行政区划代码:http://files2.mca.gov.cn/www/201510/20151027164514222.htm
|
* @param code 城市编码
|
* @return void
|
*/
|
+ (void)setCityCode:(nonnull NSString *)code;
|
|
#pragma mark Share
|
|
/**
|
* 处理第三方app通过URL启动App时传递的数据
|
* 需要在 application:handleOpenURL中调用。
|
* @param url 启动App的URL
|
* @param delegate 用来接收第三方app触发的消息。
|
* @return 成功返回YES,失败返回NO。
|
*/
|
+ (BOOL)handleOpenURL:(nonnull NSURL *)url delegate:(nullable id)delegate;
|
|
/**
|
* @deprecated This method is deprecated starting in version 3.66
|
* @note Please use @code handleOpenURL:delegate: @code instead.
|
**/
|
+ (BOOL)handleOpenURL:(nonnull NSURL *)url sourceApplication:(nullable NSString *)sourceApplication annotation:(nullable id)annotation delegate:(nullable id)delegate DEPRECATED(3.66);
|
|
#pragma mark mLink
|
/**
|
* 获得最近一次的mLink短链接的渠道来源
|
* @return stirng
|
*/
|
+ (nullable NSString *)getLastChannelForMLink;
|
|
/**
|
* 注册一个mLink handler,当接收到URL的时候,会根据mLink key进行匹配,当匹配成功会调用相应的handler
|
* 需要在 AppDelegate 的 didFinishLaunchingWithOptions 中调用
|
* @param key 后台注册mlink时生成的mlink key
|
* @param handler mlink的回调
|
* @param params 动态参数
|
* @return void
|
*/
|
+ (void)registerMLinkHandlerWithKey:(nonnull NSString *)key handler:(CallBackMLink)handler;
|
|
/**
|
* 注册一个默认的mLink handler,当接收到URL,并且所有的mLink key都没有匹配成功,就会调用默认的mLink handler
|
* 需要在 AppDelegate 的 didFinishLaunchingWithOptions 中调用
|
* @param handler mlink的回调
|
* @return void
|
*/
|
+ (void)registerMLinkDefaultHandler:(CallBackMLink)handler;
|
|
/**
|
* 根据不同的URL路由到不同的app展示页
|
* 需要在 application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation 中调用
|
* @param url 传入上面方法中的openUrl
|
* @return void
|
*/
|
+ (void)routeMLink:(nonnull NSURL *)url;
|
|
/**
|
* 根据universal link路由到不同的app展示页
|
* 需要在 application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void(^)(NSArray * __nullable restorableObjects))restorationHandler 中调用
|
* @param userActivity 传入上面方法中的userActivity
|
* @return BOOL
|
*/
|
+ (BOOL)continueUserActivity:(nonnull NSUserActivity *)userActivity;
|
|
/**
|
* A跳B,B判断是否需要返回A
|
* @return BOOL YES:需要返回,NO:不需要返回
|
*/
|
+ (BOOL)callbackEnable;
|
|
/**
|
* A跳B,B返回A的时候,调用此方法
|
* @param params 返回A时需要传入的参数
|
* @return BOOL YES:成功返回,NO:失败
|
*/
|
+ (BOOL)returnOriginAppWithParams:(nullable NSDictionary *)params;
|
|
/**
|
* 获取无码邀请中传回来的相关值
|
* @param paramKey,比如:u_id
|
* @return id 返回相应的值
|
*/
|
+ (nullable id)getMLinkParam:(nonnull NSString *)paramKey;
|
|
@end
|