国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

iOS第三方庫-魔窗Mlink的坑

2019-11-07 23:53:34
字體:
來源:轉載
供稿:網友

集成的話,直接按照官方文檔來實現就可以了,基本上沒什么大問題。

下面說一下我再使用魔窗-mlink功能中遇到的問題,

含有mlinkkey識別的方法使用:/** * 注冊一個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;

這個方法主要是使用于推廣場景固定的情況下,可以添加多個方法,來實現不同的key&不同的場景。

這里要注意:

1.短連接拼接參數。2.在回調里面可以拿到短連接里面攜帶的參數。通用mlinkkey的方法使用:/** * 注冊一個默認的mLink handler,當接收到URL,并且所有的mLink key都沒有匹配成功,就會調用默認的mLink handler * 需要在 AppDelegate 的 didFinishLaunchingWithOptions 中調用 * @param handler mlink的回調 * @return void */+ (void)registerMLinkDefaultHandler:(CallBackMLink)handler;

需要注意的是:

1.在這個通用方法里面,不需要預先在代碼里面添加mlinkKey,所有在魔窗平臺設置mlink服務都會執行這個方法。2.短連接參數的拼接。

特別注意:

[MWApi registerMLinkDefaultHandler:^(NSURL * _Nonnull url, NSDictionary * _Nullable params) { //回調里面不會返回給你參數, //會返回給你完整的短連接,(攜帶參數) //如果想要滿足-場景不確定-場景數目不確定的情況下,只能調用這個方法。但是問題是沒有參數返回給我們。 //所以我們只能在完整的短連接里面回去參數。 //代碼如下。}];在完整的短連接里面獲取參數///從url中得到參數- (NSDictionary *)getParameterFromUrl:(NSURL *)url{ //https://s.mlinks.cc/AawE?mode=web&param=hhh //1.url轉字符 NSString *getUrlValue = [NSString stringWithFormat:@"%@",url]; //2.拆分url,得到參數的字符串 NSArray * array = [getUrlValue componentsSeparatedByString:@"?"]; //mode=web&param=hhh NSString *valueStr = [NSString stringWithFormat:@"%@",array.lastObject]; //mode=web param=hhh //3.拆分參數的字符串,得到具體參數 NSArray *valueArr = [valueStr componentsSeparatedByString:@"&"]; //4.存儲 NSMutableDictionary *target = [NSMutableDictionary dictionary]; if (valueArr.count > 0) { for (int i = 0; i < valueArr.count; i ++) { NSArray *newarray = [[valueArr objectAtIndex:i] componentsSeparatedByString:@"="]; if (newarray.count > 0) { NSString *key = [NSString stringWithFormat:@"%@",newarray.firstObject]; NSString *value = [NSString stringWithFormat:@"%@",newarray.lastObject]; //urlDecode NSString * paramJson = [self URLDecodedString:value]; //jsonStr //這里要特別注意,萬一參數是一個字典,我們需要用url編碼進行編碼,將編碼之后的字符串下發,拿到之后要進行解碼,以及json字符串轉成字典 NSDictionary * param1 = [self dictionaryWithJsonString:paramJson]; if (param1.count > 0) { [target setObject:param1 forKey:key]; }else{ [target setObject:value forKey:key]; } } } DLog(@"%@",target); } NSDictionary *param = [target mutableCopy]; return param;}UrlDecode///url解碼-(NSString *)URLDecodedString:(NSString *)str{ NSString *decodedString =(__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL, (__bridge CFStringRef)str, CFSTR(""), CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding)); return decodedString;}json字符串轉字典///字符串轉字典- (NSDictionary *)dictionaryWithJsonString:(NSString *)jsonString{ if (jsonString == nil) { return nil; } NSData *jsonData = [jsonString dataUsingEncoding:NSUTF8StringEncoding]; NSError *err; NSDictionary *dic = [NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&err]; if(err) { DLog(@"json解析失敗:%@",err); NSDictionary * errDic = [[NSDictionary alloc] init]; return errDic; } return dic; }

初學者書,有錯誤歡迎大家留言指正


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 长阳| 买车| 原平市| 静乐县| 彭山县| 双牌县| 陈巴尔虎旗| 大渡口区| 德格县| 馆陶县| 南靖县| 公主岭市| 万州区| 阿坝县| 内江市| 辽阳市| 大同市| 台中市| 徐闻县| 胶州市| 汽车| 安福县| 收藏| 北川| 遂平县| 鹤山市| 瓮安县| 福建省| 井研县| 岑溪市| 吉安县| 博爱县| 炎陵县| 曲麻莱县| 会宁县| 宝兴县| 贵阳市| 兰州市| 甘洛县| 钟山县| 新巴尔虎左旗|