Commit 33b0e479 by pidan

外部跳转接入

parent 5b83134d
......@@ -72,6 +72,12 @@ NS_ASSUME_NONNULL_BEGIN
/// 我的族人地址
+(NSString *)fus_inviteMyClansmanUrl;
/// 正式服外链跳转中转页面
+ (NSString *)scheduleOpenUrlMiddlewareUrl;
/// 测试服外链跳转中转页面
+ (NSString *)scheduleOpenUrlMiddlewareTestUrl;
@end
@interface FUSCommonURLs : NSObject
......
......@@ -104,6 +104,16 @@
return [FUSConfig.sharedInstanced.pathConfigs webUrl:@"/vestApp/newShare/inviteNum.html"];
}
/// 正式服外链跳转中转页面
+ (NSString *)scheduleOpenUrlMiddlewareUrl {
return @"https://events.yabolive.net/Nesting/middleware/index.html";
}
/// 测试服外链跳转中转页面
+ (NSString *)scheduleOpenUrlMiddlewareTestUrl {
return @"https://ceshi.yabolive.tv/Nesting/middleware/index.html";
}
@end
@implementation FUSCommonURLs
......
......@@ -21,6 +21,11 @@
#define FUSUserModule BFModule(FUSUserRouterProtocol)
/**
登录结果回调,包括成功失败回调
*/
typedef void(^FUSLoginSucceedListenerHandler)(void);
NS_ASSUME_NONNULL_BEGIN
@protocol FUSUserRouterProtocol <BifrostModuleProtocol>
......@@ -35,10 +40,15 @@ NS_ASSUME_NONNULL_BEGIN
- (void)fus_checkAppStatus;
/// 监听是否有已经登录的监听
- (void)fus_loginSucceedListener:(FUSLoginSucceedListenerHandler)loginSucceedListenerHandler;
- (void)fus_enterUserZone:(NSString *)userId;
- (void)fus_enterUserZone:(NSString *)userId isFromLiveRoomChat:(BOOL)isFromLiveRoomChat;
- (void)fus_enterTopicDetailPage:(NSString *)topicId;
- (void)fus_enterMotorWareVC;
/// 进入任务中心
......
......@@ -19,6 +19,17 @@ static NSString *const kGtAppId = @"2ecfODySFs8GlqYu7H2hW9";
static NSString *const kGtAppKey = @"tjOur8OKTU7srFHoA0lB91";
static NSString *const kGtAppSecret = @"OSSSWqbWY0ACJiUv4AHdW7";
static NSString * const openAppEventSchedule = @"openAppEventSchedule";
typedef NS_ENUM(NSInteger, FFOutsideJumpAPPType) {
FFOutsideJumpAPPTypePushLive,
FFOutsideJumpAPPTypeEnterRoom,
FFOutsideJumpAPPTypeEnterZone,
FFOutsideJumpAPPTypeWeb,
FFOutsideJumpAPPTypeFansClub,
FFOutsideJumpAPPTypeDynamic
};
@interface AppDelegate ()<UNUserNotificationCenterDelegate, GeTuiSdkDelegate,UIApplicationDelegate>
@end
......@@ -109,27 +120,6 @@ static NSString *const kGtAppSecret = @"OSSSWqbWY0ACJiUv4AHdW7";
}];
}
// 支付回调, 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([[FUSThirdAccountLoginHelper sharedInstanse] fus_isOpenSocializedPlatformURL:url]) {
FUSSocializedPlatform platform = [[FUSThirdAccountLoginHelper sharedInstanse] platformForOpenURL:url];
return [[FUSThirdAccountLoginHelper sharedInstanse] fus_sociallizedPlatform:platform OpenApplication:app openURL:url options:options];
}
NSString *urlDecodingString = [FUSUrlDecode fus_urlDecodedString:url.absoluteString];
//TODO:看看这是要做咩: added By Pidan
if ([urlDecodingString containsString:@"FusiClub://www.fusiclub.com"]) {
[[FUSThirdAccountLoginHelper sharedInstanse] fus_handlerSafariLoginSucceedWithURL:urlDecodingString];
return YES;
}
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
[Bifrost checkAllModulesWithSelector:@selector(applicationWillResignActive:) arguments:@[application]];
}
......@@ -160,10 +150,137 @@ static NSString *const kGtAppSecret = @"OSSSWqbWY0ACJiUv4AHdW7";
}
- (BOOL)application:(UIApplication *)app continueUserActivity:(nonnull NSUserActivity *)userActivity restorationHandler:(nonnull void (^)(NSArray<id<UIUserActivityRestoring>> * _Nullable))restorationHandler {
if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) {
if (userActivity.webpageURL) {
[self fus_handlerUrlOpenAppActionWithURL:userActivity.webpageURL];
}
}
//其他代码
return YES;
}
// 支付回调, 9.0以后使用新API接口
- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<NSString*, id> *)options
{
if ([[FUSThirdAccountLoginHelper sharedInstanse] fus_isOpenSocializedPlatformURL:url]) {
FUSSocializedPlatform platform = [[FUSThirdAccountLoginHelper sharedInstanse] platformForOpenURL:url];
return [[FUSThirdAccountLoginHelper sharedInstanse] fus_sociallizedPlatform:platform OpenApplication:app openURL:url options:options];
}
[self fus_handlerUrlOpenAppActionWithURL:url];
return YES;
}
- (void)fus_handlerUrlOpenAppActionWithURL:(NSURL *)url {
NSString *absoluteString = [url absoluteString];
if ([absoluteString containsString:openAppEventSchedule]) {
NSURLComponents *components = [NSURLComponents componentsWithURL:url resolvingAgainstBaseURL:NO];
if (components.queryItems.count > 0) {
for (NSURLQueryItem *item in components.queryItems) {
if ([item.name isEqualToString:openAppEventSchedule] && item.value) {
NSData *jsonData = [[NSData alloc] initWithBase64EncodedString:item.value options:0];
NSError *error = nil;
id dataJson = [NSJSONSerialization JSONObjectWithData:jsonData options:kNilOptions error:&error];
if (error) continue;
id data = [dataJson objectForKey:@"openData"];
if (!data || [data isKindOfClass:[NSNull class]] || ([data respondsToSelector:@selector(length)] && [(NSData *)data length] == 0)) {
data = dataJson;
}
// id behaviorLog = [dataJson objectForKey:@"behaviorLog"];
// NSInteger reqType = [[behaviorLog objectForKey:@"reqType"] integerValue];
// if (reqType != 0) {
// [[NSNotificationCenter defaultCenter] postNotificationName:@"FUSBehaviorExternalCallLog" object:nil userInfo:@{
// @"reqType": @(reqType),
// @"reqJson": [NSString stringWithFormat:@"%@", behaviorLog]
// }];
// }
[FUSRouter.userRouter fus_loginSucceedListener:^{
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
NSInteger rawType = [[dataJson objectForKey:@"type"] integerValue];
FFOutsideJumpAPPType type = rawType;
switch (type) {
case FFOutsideJumpAPPTypePushLive:
[FUSRouter.liveRouter fus_pushLive];
break;
case FFOutsideJumpAPPTypeEnterRoom: {
NSString *roomId = [[data objectForKey:@"paramInfo"] description];
// NSLog(@"enterLiveRoom: %@", roomId);
// id behaviorLog = [dataJson objectForKey:@"behaviorLog"];
// NSInteger liveType = [[behaviorLog objectForKey:@"liveType"] integerValue];
// if (liveType != 0) {
// [[NSNotificationCenter defaultCenter] postNotificationName:@"FUSBehaviorJoinRoomLog" object:nil userInfo:@{
// @"reqType": @5,
// @"reqEventType": @(liveType),
// @"roomId": roomId
// }];
// }
[FUSRouter.liveRouter fus_enterLiveRoom:roomId];
break;
}
case FFOutsideJumpAPPTypeEnterZone: {
NSString *uid = [[data objectForKey:@"paramInfo"] description];
[FUSRouter.userRouter fus_enterUserZone:uid];
break;
}
case FFOutsideJumpAPPTypeWeb: {
NSString *webParams = [[data objectForKey:@"paramInfo"] stringValue];
DebugEnv env = [[[NSUserDefaults standardUserDefaults] objectForKey:CURRENT_DEBUG_ENV] integerValue];
NSString *urlStr = FUSCommonWebURLs.scheduleOpenUrlMiddlewareUrl;
if (env == DebugEnvTest) {
urlStr = FUSCommonWebURLs.scheduleOpenUrlMiddlewareTestUrl;
}
urlStr = [NSString stringWithFormat:@"%@%@",urlStr, webParams];
FUSWKWebViewController *webVC = [[FUSWKWebViewController alloc] init];
webVC.webUrlString = urlStr;
webVC.needShowReload = YES;
webVC.shouldIncludeIdentifyInfo = YES;
[[UIViewController fus_topViewController].navigationController pushViewController:webVC animated:YES];
break;
}
case FFOutsideJumpAPPTypeFansClub: {
// NSString *groupId = [[dataJson objectForKey:@"data"] stringValue];
// NSLog(@"进入粉丝群组: %@", groupId);
break;
}
case FFOutsideJumpAPPTypeDynamic: {
NSString *topicId = [[dataJson objectForKey:@"topicId"] description];
[FUSRouter.userRouter fus_enterTopicDetailPage:topicId];
break;
}
default:
break;
}
});
}];
}
}
}
}
}
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_10_0
// iOS 10: 点击通知进入App时触发,在该方法内统计有效用户点击数
......
......@@ -8,5 +8,9 @@
<array>
<string>Default</string>
</array>
<key>com.apple.developer.associated-domains</key>
<array>
<string>applinks:fusiclub.com</string>
</array>
</dict>
</plist>
......@@ -29,6 +29,9 @@ typedef void(^loginCompletion)(int code, NSString *msg);
*/
- (void)fus_readyToLogInWithCompletion:(loginCompletion)loginCompletion;
/// 监听是否有已经登录的监听
- (void)fus_loginSucceedListener:(FUSLoginSucceedListenerHandler)loginSucceedListenerHandler;
/**
手机号码登录
......
......@@ -52,6 +52,9 @@
// Socket 校验 Timer
@property (nonatomic, strong) NSTimer *socketCheckTimer;
/// 登录状态监听
@property (nonatomic, strong) NSMutableArray<FUSLoginSucceedListenerHandler> *loginListeners;
@end
@implementation FUSLoginHelper
......@@ -71,6 +74,14 @@
return instance;
}
- (instancetype)init {
self = [super init];
if (self) {
self.loginListeners = [NSMutableArray array];
}
return self;
}
/**
登录准备
......@@ -357,6 +368,13 @@
if (_loginCompletion) _loginCompletion(1, [NSString fus_localString:@"成功"]);
_loginCompletion = nil;
NSArray *loginListeners = [self.loginListeners copy];
for (FUSLoginSucceedListenerHandler listener in loginListeners) {
listener();
}
[self.loginListeners removeAllObjects];
// 注册监听相关通知
[[FUSRecieveNotificationHelper sharedInstance] fus_setup];
......@@ -468,6 +486,23 @@
[[FUSSwiftCacheDataShare share] fus_dealLoginSuccess];
}
- (void)fus_loginSucceedListener:(FUSLoginSucceedListenerHandler)loginSucceedListenerHandler {
if (![FUSCacheDataShare shareStore].userVerifyInfo.uid) {
if (loginSucceedListenerHandler) {
[self.loginListeners addObject:loginSucceedListenerHandler];
}
return;
} else {
if (loginSucceedListenerHandler) {
loginSucceedListenerHandler();
}
}
}
#pragma mark - Method
/**
进行 Socket 连接
......
......@@ -89,6 +89,11 @@
#pragma mark - Protocal Methods
/// 监听是否有已经登录的监听
- (void)fus_loginSucceedListener:(FUSLoginSucceedListenerHandler)loginSucceedListenerHandler {
[FUSLoginHelper.sharedInstance fus_loginSucceedListener:loginSucceedListenerHandler];
}
- (FUSPublicHalfScreenPhotoView *)createHalfScreenPhotoViewWithFrame:(CGRect)frame {
return [[FUSHalfScreenPhotoView alloc] initWithFrameWithClearManager:frame];
}
......@@ -116,6 +121,15 @@
case 4: {
NSString *topicId = [info[@"topicId"] description];
[self fus_enterTopicDetailPage:topicId];
break;
}
default:
break;
}
}
- (void)fus_enterTopicDetailPage:(NSString *)topicId {
if ([NSString isNull:topicId]) {
return;
}
......@@ -165,11 +179,6 @@
feedListVC.from = 1;
[[UIViewController fus_topViewController].navigationController pushViewController:feedListVC animated:YES];
}];
break;
}
default:
break;
}
}
- (void)fus_enterUserZone:(NSString *)userId {
......
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