Commit 249c130b by pierce

直播间内各种弹窗

parent 13fd372c
Showing with 297 additions and 60 deletions
...@@ -61,7 +61,6 @@ Pod::Spec.new do |s| ...@@ -61,7 +61,6 @@ Pod::Spec.new do |s|
s.dependency 'UIImage+BlurredFrame' s.dependency 'UIImage+BlurredFrame'
s.dependency 'MJRefresh', '3.1.17' s.dependency 'MJRefresh', '3.1.17'
s.dependency 'ZipArchive' s.dependency 'ZipArchive'
s.dependency 'TalkingData/Full'
s.dependency 'HWPanModal' s.dependency 'HWPanModal'
s.dependency 'Masonry' s.dependency 'Masonry'
......
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
// //
#import "FUSTalkingData.h" #import "FUSTalkingData.h"
#import <TalkingData/TalkingData.h> #import "TalkingData.h"
#import "NSString+Check.h" #import "NSString+Check.h"
#import "FUSConfig.h" #import "FUSConfig.h"
...@@ -20,7 +20,7 @@ ...@@ -20,7 +20,7 @@
@param channelId(可选) 渠道名,如“app store” @param channelId(可选) 渠道名,如“app store”
*/ */
+ (void)fus_sessionStarted:(NSString *)appKey withChannelId:(NSString *)channelId{ + (void)fus_sessionStarted:(NSString *)appKey withChannelId:(NSString *)channelId{
[TalkingDataSDK init:appKey channelId:channelId custom:@"FusiLive"]; [TalkingData sessionStarted:appKey withChannelId:channelId];
} }
/** /**
...@@ -29,7 +29,7 @@ ...@@ -29,7 +29,7 @@
@return DeviceID @return DeviceID
*/ */
+(NSString *)fus_getDeviceID{ +(NSString *)fus_getDeviceID{
return [TalkingDataSDK getDeviceId]; return [TalkingData getDeviceID];
} }
/** /**
...@@ -39,7 +39,7 @@ ...@@ -39,7 +39,7 @@
如果需要记录程序崩溃日志,请将值设成YES,并且在调用sessionStarted:withChannelId:之前调用此函数 如果需要记录程序崩溃日志,请将值设成YES,并且在调用sessionStarted:withChannelId:之前调用此函数
*/ */
+ (void)fus_setExceptionReportEnabled:(BOOL)enable{ + (void)fus_setExceptionReportEnabled:(BOOL)enable{
[TalkingDataSDK setExceptionReportEnabled:enable]; [TalkingData setExceptionReportEnabled:enable];
} }
/** /**
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
*/ */
+ (void)fus_trackEvent:(NSString *)eventId{ + (void)fus_trackEvent:(NSString *)eventId{
if (FUSConfig.sharedInstanced.devConfigs.talkingDataState) { if (FUSConfig.sharedInstanced.devConfigs.talkingDataState) {
[TalkingDataSDK onEvent:eventId value:1 parameters:@{}]; [TalkingData trackEvent:eventId label:nil parameters:@{}];
} }
} }
...@@ -63,7 +63,7 @@ ...@@ -63,7 +63,7 @@
*/ */
+ (void)fus_trackEvent:(NSString *)eventId label:(NSString *)eventLabel{ + (void)fus_trackEvent:(NSString *)eventId label:(NSString *)eventLabel{
if (FUSConfig.sharedInstanced.devConfigs.talkingDataState) { if (FUSConfig.sharedInstanced.devConfigs.talkingDataState) {
[TalkingDataSDK onEvent:eventId value:1 parameters:@{eventLabel:eventLabel}]; [TalkingData trackEvent:eventId label:eventLabel parameters:@{}];
} }
} }
...@@ -83,7 +83,7 @@ ...@@ -83,7 +83,7 @@
if (![NSString isNull:eventLabel]) { if (![NSString isNull:eventLabel]) {
[param setObject:eventLabel forKey:eventLabel]; [param setObject:eventLabel forKey:eventLabel];
} }
[TalkingDataSDK onEvent:eventId value:1 parameters:@{eventLabel:eventLabel}]; [TalkingData trackEvent:eventId label:eventLabel parameters:parameters];
} }
} }
...@@ -94,7 +94,7 @@ ...@@ -94,7 +94,7 @@
* @param pageName 页面名称(自定义) * @param pageName 页面名称(自定义)
*/ */
+ (void)fus_trackPageBegin:(NSString *)pageName{ + (void)fus_trackPageBegin:(NSString *)pageName{
[TalkingDataSDK onPageBegin:pageName]; [TalkingData trackPageBegin:pageName];
} }
/** /**
...@@ -106,7 +106,7 @@ ...@@ -106,7 +106,7 @@
* @param pageName 页面名称,请跟trackPageBegin方法的页面名称保持一致 * @param pageName 页面名称,请跟trackPageBegin方法的页面名称保持一致
*/ */
+ (void)fus_trackPageEnd:(NSString *)pageName{ + (void)fus_trackPageEnd:(NSString *)pageName{
[TalkingDataSDK onPageEnd:pageName]; [TalkingData trackPageEnd:pageName];
} }
/** /**
...@@ -116,7 +116,7 @@ ...@@ -116,7 +116,7 @@
* @param value 这里是NSObject类型,或者是NSString 或者NSNumber类型 * @param value 这里是NSObject类型,或者是NSString 或者NSNumber类型
*/ */
+(void)fus_setGlobalKV:(NSString*)key value:(id)value{ +(void)fus_setGlobalKV:(NSString*)key value:(id)value{
[TalkingDataSDK setGlobalKV:key value:value]; [TalkingData setGlobalKV:key value:value];
} }
/** /**
...@@ -125,7 +125,7 @@ ...@@ -125,7 +125,7 @@
* @param key 自定义事件的key * @param key 自定义事件的key
*/ */
+(void)fus_removeGlobalKV:(NSString*)key{ +(void)fus_removeGlobalKV:(NSString*)key{
[TalkingDataSDK removeGlobalKV:key]; [TalkingData removeGlobalKV:key];
} }
@end @end
//
// TalkingData.h
// TalkingData Version 2.2.36
//
// Created by Biao Hou on 11-11-14.
// Copyright (c) 2011年 tendcloud. All rights reserved.
//
#import <Foundation/Foundation.h>
// 以下枚举用于WatchApp页面追踪
typedef enum {
TDPageTypeGlance = 1,
TDPageTypeNotification = 2,
TDPageTypeWatchApp = 3
} TDPageType;
@interface TalkingData: NSObject
/**
* @method setVersionWithCode:name:
* 设置应用的版本号和版本名称
* @param versionCode 应用程序的版本号 默认获取info.plist中CFBundleShortVersionString的值
* @param versionName 应用程序的版本名称 默认获取info.plist中CFBundleDisplayName的值
*/
+ (void)setVersionWithCode:(NSString *)versionCode name:(NSString *)versionName;
/**
* @method sessionStarted:withChannelId:
* 初始化统计实例,请在application:didFinishLaunchingWithOptions:方法里调用
* @param appKey 应用的唯一标识,统计后台注册得到
@param channelId(可选) 渠道名,如“app store”
*/
+ (void)sessionStarted:(NSString *)appKey withChannelId:(NSString *)channelId;
/**
* @method initWithWatch:
* 初始化WatchApp统计实例,请在每个入口类的init方法里调用
* @param appKey 应用的唯一标识,统计后台注册得到
*/
+ (void)initWithWatch:(NSString *)appKey;
/**
@method getDeviceID
获取TalkingData所使用的DeviceID
@return DeviceID
*/
+(NSString *)getDeviceID;
/**
* @method setExceptionReportEnabled
* 是否捕捉程序崩溃记录 (可选)
* @param enable 默认是 NO
如果需要记录程序崩溃日志,请将值设成YES,并且在调用sessionStarted:withChannelId:之前调用此函数
*/
+ (void)setExceptionReportEnabled:(BOOL)enable;
/**
* @method setSignalReportEnabled
* 是否捕捉异常信号 (可选)
* @param enable 默认是NO
如果需要开启异常信号捕捉功能,请将值设成YES,并且在调用sessionStarted:withChannelId:之前调用此函数
*/
+ (void)setSignalReportEnabled:(BOOL)enable;
/**
* @method setLatitude:longitude:
* 设置位置信息(可选)
* @param latitude 维度
* @param longitude 经度
*/
+ (void)setLatitude:(double)latitude longitude:(double)longitude;
/**
* @method setLogEnabled
* 统计日志开关(可选)
* @param enable 默认是开启状态
*/
+ (void)setLogEnabled:(BOOL)enable;
/**
* @method trackEvent
* 统计自定义事件(可选),如购买动作
* @param eventId 事件名称(自定义)
*/
+ (void)trackEvent:(NSString *)eventId;
/**
* @method trackEvent:label:
统计带标签的自定义事件(可选),可用标签来区别同一个事件的不同应用场景
如购买某一特定的商品
*
* @param eventId 事件名称(自定义)
* @param eventLabel 事件标签(自定义)
*/
+ (void)trackEvent:(NSString *)eventId label:(NSString *)eventLabel;
/**
* @method trackEvent:label:parameters
统计带二级参数的自定义事件,单次调用的参数数量不能超过10个
*
* @param eventId 事件名称(自定义)
* @param eventLabel 事件标签(自定义)
* @param parameters 事件参数 (key只支持NSString, value支持NSString和NSNumber)
*/
+ (void)trackEvent:(NSString *)eventId
label:(NSString *)eventLabel
parameters:(NSDictionary *)parameters;
/**
* @method trackPageBegin
* 开始跟踪某一页面(可选),记录页面打开时间
建议在viewWillAppear或者viewDidAppear方法里调用
* @param pageName 页面名称(自定义)
*/
+ (void)trackPageBegin:(NSString *)pageName;
/**
* @method trackPageBegin:withPageType:
* 开始跟踪WatchApp某一页面(可选),记录页面打开时间
建议在willActivate方法里调用
* @param pageName 页面名称(自定义)
* @param pageType 页面类型(TDPageType枚举类型)
*/
+ (void)trackPageBegin:(NSString *)pageName withPageType:(TDPageType)pageType;
/**
* @method trackPageEnd
* 结束某一页面的跟踪(可选),记录页面的关闭时间
此方法与trackPageBegin方法结对使用,
在iOS应用中建议在viewWillDisappear或者viewDidDisappear方法里调用
在Watch应用中建议在DidDeactivate方法里调用
* @param pageName 页面名称,请跟trackPageBegin方法的页面名称保持一致
*/
+ (void)trackPageEnd:(NSString *)pageName;
/**
* @method setGlobalKV:value:
* 添加全局的字段,这里的内容会每次的自定义事都会带着,发到服务器。也就是说如果您的自定义事件中每一条都需要带同样的内容,如用户名称等,就可以添加进去
* @param key 自定义事件的key,如果在之后,创建自定义的时候,有相同的key,则会覆盖,全局的里相同key的内容
* @param value 这里是NSObject类型,或者是NSString 或者NSNumber类型
*/
+(void)setGlobalKV:(NSString*)key value:(id)value;
/**
* @method removeGlobalKV:
* 删除全局数据
* @param key 自定义事件的key
*/
+(void)removeGlobalKV:(NSString*)key;
// __push_start__
/**
* @method setDeviceToken 设置DeviceToken
* @param deviceToken 从Apple获取的DeviceToken
*/
+ (void)setDeviceToken:(NSData *)deviceToken;
/**
* @method handlePushMessage 处理来自TalkingData的Push消息
* @param message 收到的消息
* @return YES 来自TalkingData的消息,SDK已处理
* NO 其他来源消息,开发者需自行处理
*/
+ (BOOL)handlePushMessage:(NSDictionary *)message;
// __push_end__
@end
...@@ -222,9 +222,7 @@ NSString * const kBGShineMoveAnimation = @"kBGShineMoveAnimation"; ...@@ -222,9 +222,7 @@ NSString * const kBGShineMoveAnimation = @"kBGShineMoveAnimation";
- (UIImage *)pauseImage - (UIImage *)pauseImage
{ {
if (!_pauseImage) { if (!_pauseImage) {
_pauseImage = [UIImage imageNamed:@"Live_Pause"]; _pauseImage = [UIImage imageNamed:@"Live_Pause"];
} }
return _pauseImage; return _pauseImage;
} }
......
...@@ -5,18 +5,17 @@ ...@@ -5,18 +5,17 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "icon_empty_view.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "checkIn_placeholder@2x.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "universal", "idiom" : "universal",
"filename" : "checkIn_placeholder@3x.png",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "默认占位图@2x.png", "filename" : "icon_empty_view.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "通用占位图@2x.png", "filename" : "ic_sign_placeholder.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
......
...@@ -5,18 +5,17 @@ ...@@ -5,18 +5,17 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "icon_empty_view.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "送礼没数据占位图@2x.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "universal", "idiom" : "universal",
"filename" : "送礼没数据占位图@3x.png",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "兌換@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "兌換@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "兌換@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "兌換@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "直播间-底部-任务@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "直播间-底部-任务-preesed@2x.png", "filename" : "直播间-底部-任务@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "直播间-底部-任务@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,12 +5,12 @@ ...@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Live_bottom_PK_Normal@2x.png", "filename" : "PK@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Live_bottom_PK_Normal@3x.png", "filename" : "PK@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,12 +5,12 @@ ...@@ -5,12 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "Live_bottom_PK_Preesed@2x.png", "filename" : "PK@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "Live_bottom_PK_Preesed@3x.png", "filename" : "PK@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,7 +5,7 @@ ...@@ -5,7 +5,7 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "默认占位图@2x.png", "filename" : "icon_empty_view.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
......
...@@ -6,17 +6,16 @@ ...@@ -6,17 +6,16 @@
}, },
{ {
"idiom" : "universal", "idiom" : "universal",
"filename" : "我的-照片-占位图@2x.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "live_tool_interaction_game_entrance@3x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "我的-照片-占位图@3x.png",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "关注圈-normal@2x.png", "filename" : "關注圈@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "關注圈@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "关注圈-preesed@2x.png", "filename" : "關注圈@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "關注圈@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "亲密圈-normal@2x.png", "filename" : "親密圈@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "親密圈@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "亲密圈-preesed@2x.png", "filename" : "親密圈@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "親密圈@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "全公开-normal@2x.png", "filename" : "全公开@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "全公开@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,11 +5,12 @@ ...@@ -5,11 +5,12 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "全公开-preesed@2x.png", "filename" : "全公开@2x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "全公开@3x.png",
"idiom" : "universal", "idiom" : "universal",
"scale" : "3x" "scale" : "3x"
} }
......
...@@ -5,18 +5,17 @@ ...@@ -5,18 +5,17 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "直播间-底部-任务@2x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "我的-视频-占位图@2x.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"idiom" : "universal", "idiom" : "universal",
"filename" : "我的-视频-占位图@3x.png",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "直播间-底部-任务@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
...@@ -5,18 +5,18 @@ ...@@ -5,18 +5,18 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "直播间-底部-私信@2x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "直播间-底部-私信icon-preesed@2x.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "直播间-底部-私信@3x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "直播间-底部-私信icon-preesed@3x.png",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }
...@@ -5,18 +5,18 @@ ...@@ -5,18 +5,18 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "直播间-底部-私信@2x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "直播间-底部-私信icon-normal@2x.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "直播间-底部-私信@3x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "直播间-底部-私信icon-normal@3x.png",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }
...@@ -5,18 +5,18 @@ ...@@ -5,18 +5,18 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "直播间-底部-截图@2x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "直播间-底部-截图icon-preesed@2x.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "直播间-底部-截图@3x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "直播间-底部-截图icon-preesed@3x.png",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }
...@@ -5,18 +5,18 @@ ...@@ -5,18 +5,18 @@
"scale" : "1x" "scale" : "1x"
}, },
{ {
"filename" : "直播间-底部-截图@2x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "直播间-底部-截图icon-normal@2x.png",
"scale" : "2x" "scale" : "2x"
}, },
{ {
"filename" : "直播间-底部-截图@3x.png",
"idiom" : "universal", "idiom" : "universal",
"filename" : "直播间-底部-截图icon-normal@3x.png",
"scale" : "3x" "scale" : "3x"
} }
], ],
"info" : { "info" : {
"version" : 1, "author" : "xcode",
"author" : "xcode" "version" : 1
} }
} }
This source diff could not be displayed because it is too large. You can view the blob instead.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment