Commit 5e820025 authored by Mazy's avatar Mazy

feat: add wechat login

parent 8b9529d2
......@@ -21,8 +21,7 @@
#import "GYGiftAlertView.h"
#import <UMCommon/UMCommon.h>
#import "GYSettingViewController.h"
#import "GYLoginViewController.h"
UnityFramework* UnityFrameworkLoad()
{
......@@ -356,8 +355,6 @@ NSDictionary* appLaunchOpts;
}
}];
}
// 获取地块列表
......@@ -691,24 +688,41 @@ NSDictionary* appLaunchOpts;
dispatch_async(dispatch_get_main_queue(), ^{
[self initUnity];
[[[self ufw] appController].window makeKeyAndVisible];
[[CGUserManager shared] addLocCollection:@"tab_imp" value:@"1"];
if(![[data Read] objectForKey:@"firstInstall"]){
[data WirteDic:@"1" Key:@"firstInstall"];
}else{
}
});
}];
[[IOSADManager shareADManager] showADType:ADType_OpenScreen resultBlock:^(BOOL success) {
[[IOSADManager shareADManager] requestVideoAD];
}];
NSString *status = [[CGUserManager shared].appSwitch[@"isopenH5"] stringValue];
NSLog(@"isopenH5 = %@", status);
if ([status isEqualToString:@"1"]) {
Data * data = [[Data alloc] init];
if([[data Read] objectForKey:@"refresh_token"] == nil) {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(launchAdSuccesShow) name:LaunchAdSuccesShow object:nil];
}
}
return YES;
}
- (void)launchAdSuccesShow {
// WEAKSELF;
// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.25 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
GYLoginViewController *loginVC = [[UIStoryboard storyboardWithName:@"Main" bundle:nil] instantiateViewControllerWithIdentifier:@"GYLoginViewController"];
loginVC.modalPresentationStyle = UIModalPresentationFullScreen;
UINavigationController *naviVC = [[UINavigationController alloc] initWithRootViewController:loginVC];
naviVC.modalPresentationStyle = UIModalPresentationFullScreen;
[[[self ufw] appController].window.rootViewController.view addSubview:naviVC.view];
[[[self ufw] appController].window.rootViewController addChildViewController:naviVC];
// [[[self ufw] appController].window.rootViewController presentViewController:naviVC animated:false completion:nil];
// });
}
- (void)unityVideo:(BOOL)video{
if (video) {
[[self ufw] sendMessageToGOWithName: "TitleView" functionName: "unity_changeMusicStatus" message: [@"1" UTF8String]];
......
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "wechat_login_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "wechat_login_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "wechat_login_btn_bg@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "wechat_login_btn_bg@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x"
},
{
"filename" : "wechat_login_logo_icon@2x.png",
"idiom" : "universal",
"scale" : "2x"
},
{
"filename" : "wechat_login_logo_icon@3x.png",
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
This diff is collapsed.
......@@ -28,6 +28,8 @@
#define WXLoginState @"WTF"
#define WXLoginName @"WXLogin"
#define LaunchAdSuccesShow @"LaunchAdSuccesShow"
#define UMAppkey @"5f966f0d45b2b751a91b6012"
#define saltA @"HXHJ4KDL1QPFHGA0" // md5盐值
......
......@@ -575,7 +575,7 @@ static IOSADManager * manager = nil;
weakSelf.adShowBlock(success);
weakSelf.showNow = NO;
[[NSNotificationCenter defaultCenter] postNotificationName: LaunchAdSuccesShow object:nil];
}else if (model.loadADType == ADType_BigImage){ //原生
[weakSelf clearCache:model];
......
......@@ -6,8 +6,13 @@
//
#import "GYLoginViewController.h"
#import "WXApi.h"
#import "GYWebViewController.h"
@interface GYLoginViewController ()
@interface GYLoginViewController () <WXApiDelegate>
@property (weak, nonatomic) IBOutlet UIButton *skipButton;
@property (weak, nonatomic) IBOutlet UIView *skipLineView;
@end
......@@ -16,16 +21,123 @@
- (void)viewDidLoad {
[super viewDidLoad];
// Do any additional setup after loading the view.
// 隐藏 navigation bar 的 "返回"(或其他)
self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"" style:(UIBarButtonItemStylePlain) target:nil action:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(WXLoginOauth:) name:WXLoginName object:nil];
NSString *status = [[CGUserManager shared].appSwitch[@"isopenH5"] stringValue];
NSLog(@"isopenH5 = %@", status);
if ([status isEqualToString:@"1"]) {
self.skipButton.hidden = true;
self.skipLineView.hidden = true;
} else {
self.skipButton.hidden = false;
self.skipLineView.hidden = false;
}
}
- (void)viewWillAppear:(BOOL)animated {
[super viewWillAppear:animated];
[self.navigationController setNavigationBarHidden:true animated:true];
}
/// 跳过
- (IBAction)skipAction:(UIButton *)sender {
[self.view removeFromSuperview];
[self removeFromParentViewController];
}
/// 微信登录
- (IBAction)weichatLoginAction:(UIButton *)sender {
Data * data = [[Data alloc] init];
if([[data Read] objectForKey:@"refresh_token"]){
[self WXLoginOauth:nil];
}else{
[[CGUserManager shared] addLocCollection:@"click_login" value:@""];
// 构造SendAuthReq结构体
SendAuthReq* req = [[SendAuthReq alloc] init];
req.scope = @"snsapi_userinfo";
req.state = WXLoginState;
//第三方向微信终端发送一个SendAuthReq消息结构
[WXApi sendAuthReq:req viewController:self delegate:UIApplication.sharedApplication.delegate completion:^(BOOL success) {
if (!success){
[[CGUserManager shared] addLocCollection:@"login_fail" value:@""];
}
}];
}
}
- (void)WXLoginOauth:(NSNotification*)notification{
NSDictionary * dict = notification.userInfo;
[[CGNetworkTools shared] pureGetWithAdsTrackingAction:[NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/access_token?appid=%@&secret=%@&code=%@&grant_type=%@",WXAppId,WXAppSecret,dict[@"code"],@"authorization_code"] success:^(id _Nonnull response) {
Data * data = [[Data alloc] init];
if ([[response objectForKey:@"expires_in"] integerValue] == 7200) {
[data WirteDic:[response objectForKey:@"openid"] Key:@"openid"];
[data WirteDic:[response objectForKey:@"access_token"] Key:@"access_token"];
[data WirteDic:[response objectForKey:@"refresh_token"] Key:@"refresh_token"];
[self authWXLogin];
}else if ([[response objectForKey:@"errcode"] integerValue] == 40163 || [[response objectForKey:@"errcode"] integerValue] == 40029) {
[[CGNetworkTools shared] pureGetWithAdsTrackingAction:[NSString stringWithFormat:@"https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=%@&grant_type=refresh_token&refresh_token=%@",WXAppId,[[data Read] objectForKey:@"refresh_token"]] success:^(id _Nonnull response) {
if ([[response objectForKey:@"expires_in"] integerValue] == 7200) {
[data WirteDic:[response objectForKey:@"openid"] Key:@"openid"];
[data WirteDic:[response objectForKey:@"access_token"] Key:@"access_token"];
[data WirteDic:[response objectForKey:@"refresh_token"] Key:@"refresh_token"];
[self authWXLogin];
}else{
[[CGUserManager shared] addLocCollection:@"login_fail" value:[NSString stringWithFormat:@"%@", [response objectForKey:@"errcode"]]];
}
} failure:^(NSError * _Nonnull error) {
[[CGUserManager shared] addLocCollection:@"login_fail" value:@"netWork"];
}];
}else{
[[CGUserManager shared] addLocCollection:@"login_fail" value:[NSString stringWithFormat:@"%@", [response objectForKey:@"errcode"]]];
}
} failure:^(NSError * _Nonnull error) {
[[CGUserManager shared] addLocCollection:@"login_fail" value:@"netWork"];
}];
}
/*
#pragma mark - Navigation
- (void)authWXLogin{
Data * data = [[Data alloc] init];
[[CGNetworkTools shared] postWithAction:wxLogin parameters:@{@"accessToken":[[data Read] objectForKey:@"access_token"], @"openid":[[data Read] objectForKey:@"openid"]} success:^(id _Nonnull response) {
if([[response objectForKey:@"status"] integerValue] == 200){
Data * data = [[Data alloc] init];
[data WirteDic:[[[response objectForKey:@"result"] objectForKey:@"data"] objectForKey:@"flushToken"] Key:@"flushToken"];
[self skipAction:nil];
}
} failure:^(NSError * _Nonnull error) {
// In a storyboard-based application, you will often want to do a little preparation before navigation
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
// Get the new view controller using [segue destinationViewController].
// Pass the selected object to the new view controller.
}];
}
*/
- (IBAction)showUserAgentAndPolicyAction:(UIButton *)sender {
if (sender.tag == 1000) {
// 用户协议
GYWebViewController *webVc = [[GYWebViewController alloc] init];
webVc.url = [[CGUserManager shared].h5_url objectForKey:@"user"];
webVc.showNav = TRUE;
webVc.webTitle = @"用户协议";
[self.navigationController pushViewController:webVc animated:true];
} else {
// 隐私政策
GYWebViewController *webVc = [[GYWebViewController alloc] init];
webVc.url = [[CGUserManager shared].h5_url objectForKey:@"privacy"];
webVc.showNav = TRUE;
webVc.webTitle = @"隐私政策";
[self.navigationController pushViewController:webVc animated:true];
}
}
@end
......@@ -124,7 +124,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="CKR-G4-A1x" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="949" y="88"/>
<point key="canvasLocation" x="696" y="88"/>
</scene>
<!--Setting View Controller-->
<scene sceneID="h25-Pj-YFy">
......@@ -265,7 +265,7 @@
</viewController>
<placeholder placeholderIdentifier="IBFirstResponder" id="mKI-BA-4uc" userLabel="First Responder" customClass="UIResponder" sceneMemberID="firstResponder"/>
</objects>
<point key="canvasLocation" x="1900.0000000000002" y="87.723214285714278"/>
<point key="canvasLocation" x="1462" y="88"/>
</scene>
</scenes>
<resources>
......
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 to comment