LSGGameActivityViewController.m
4.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
//
// LSGGameActivityViewController.m
// GameActivitySDK
//
// Created by yanglele on 2018/6/11.
// Copyright © 2018年 alexYang. All rights reserved.
//
#import "LSGGameActivityViewController.h"
#import "LetsGameActivityAPI.h"
#import "LSGColor.h"
#import "LSGUrl.h"
#import "LSGMacros.h"
@interface LSGGameActivityViewController ()<UIWebViewDelegate>
@property(nonatomic, strong) UIWebView *webView;
@end
@implementation LSGGameActivityViewController
-(void)loadView{
[super loadView];
[self.navigationController setNavigationBarHidden:YES];
self.view.backgroundColor = [LSGColor colorWithHexValue:0x181818 alpha:0.8];
[self.view addSubview:self.webView];
}
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
NSString *newUserAgent = @"Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143 Safari/601.1";
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"UserAgent":newUserAgent}];
NSString *webViewUrlPath = [decideIsDebugOrRelease(self.isDebug) stringByAppendingString:kActivityAwardURL];
NSMutableString *urlWithParams = [NSMutableString stringWithString:webViewUrlPath];
//appId=100&appKey=f899139df5e1059396431415e770c6dd&userId=123456&serverId=111&serverName=aaa&roleId=222&roleName=ccc&diamond=888
NSMutableString *queryString = [NSMutableString new];
[queryString appendFormat:@"appId=%@",self.appId];
[queryString appendFormat:@"&appKey=%@", self.appKey];
[queryString appendFormat:@"&userId=%@", self.userId];
[queryString appendFormat:@"&serverId=%@", self.serverId];
[queryString appendFormat:@"&serverName=%@", self.serverName];
[queryString appendFormat:@"&roleId=%@", self.roleId];
[queryString appendFormat:@"&roleName=%@", self.roleName];
[queryString appendFormat:@"&diamond=%@", self.diamond];
[urlWithParams appendFormat:@"?%@", queryString];
NSString *urlEncode = [urlWithParams stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSURL *url = [NSURL URLWithString:urlEncode];
NSLog(@"activity Url %@", [url absoluteString]);
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}
-(UIWebView*)webView{
if(!_webView){
_webView = [[UIWebView alloc] init];
_webView.delegate = self;
}
return _webView;
}
-(void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
[self layoutSubViews];
}
-(void)layoutSubViews{
if (iPhoneX) {
_webView.frame = CGRectMake(0, 44, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height-44-34);
}else{
_webView.frame = CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height);
}
}
-(void)injectJSObject{
NSString *jsPath = [[NSBundle mainBundle].resourcePath stringByAppendingFormat:@"/%@/ActJs.txt", kBundleName];
NSString *jsStr = [NSString stringWithContentsOfFile:jsPath encoding:NSUTF8StringEncoding error:nil];
[self.webView stringByEvaluatingJavaScriptFromString:jsStr];
}
#pragma mark webView Delegate
-(void)webViewDidFinishLoad:(UIWebView *)webView{
[self injectJSObject];
}
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSURL *url = [request URL];
NSString *urlStr = [url absoluteString];
if([urlStr hasPrefix:@"jscall"]){
NSArray *components = [urlStr componentsSeparatedByString:@":"];
NSString *function = (NSString*)[components objectAtIndex:1];
//调用oc方法,忽略警告
#pragma clang diagnostic ignored "-Warc-performSelector-leaks"
NSString *funcSig = [NSString stringWithString:function];
NSLog(@"select funcSig %@", funcSig);
SEL selector = NSSelectorFromString(funcSig);
if ([self respondsToSelector:selector]) {
[self performSelector:selector];
}
return NO;
}else{
return YES;
}
}
- (void)didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
#pragma js function
-(void)closeWin{
// [[LetsGameAPI instance] hide];
self.accomplistCallBack();
//当成功完成时返回是1(包括支付成功和支付失败),其他的情况都是没有值
// if ([args[0] isEqualToString:@"1"]) {
// //产生回调
// self.accomplistCallBack();
// }
//其余的关闭窗口
[[LetsGameActivityAPI instance] hide];
}
@end