完善sign with apple

This commit is contained in:
cebgcontract 2022-11-28 21:53:04 +08:00
parent 9e4ddec771
commit 3e92c2f31e
11 changed files with 588 additions and 113 deletions

View File

@ -0,0 +1,27 @@
//
// AppleSignIn.h
// Unity-iPhone
//
// Created by zhl on 2022/11/28.
//
#import <Foundation/Foundation.h>
#import <AuthenticationServices/AuthenticationServices.h>
NS_ASSUME_NONNULL_BEGIN
typedef void (^AppleSignInCompletion)(NSString *_Nullable idToken, NSError *_Nullable error);
@interface AppleSignIn : NSObject<ASAuthorizationControllerDelegate>
@property(nonatomic, nullable) AppleSignInCompletion completion;
@property(nonatomic, nullable) NSString *funid;
+ (instancetype)sharedInstance;
- (void)signIn:(NSString *)funid presentingViewController:(UIViewController *)presentingViewController completion:(nullable AppleSignInCompletion)completion;
@end
NS_ASSUME_NONNULL_END

131
Classes_cocos/AppleSignIn.m Normal file
View File

@ -0,0 +1,131 @@
//
// AppleSignIn.m
// Unity-iPhone
//
// Created by zhl on 2022/11/28.
//
#import "AppleSignIn.h"
static id _instance;
@implementation AppleSignIn
+ (instancetype)sharedInstance{
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [[self alloc] init];
});
return _instance;
}
+ (instancetype)allocWithZone:(struct _NSZone *)zone {
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
_instance = [super allocWithZone:zone];
});
return _instance;
}
- (id)copyWithZone:(nullable NSZone *)zone {
return _instance;
}
- (void)signIn:(NSString *)funid presentingViewController:(UIViewController *)presentingViewController completion:(nullable AppleSignInCompletion)completion API_AVAILABLE(ios(13.0)){
self.completion = completion;
self.funid = funid;
ASAuthorizationAppleIDProvider *appleIdProvider = [[ASAuthorizationAppleIDProvider alloc] init];
ASAuthorizationAppleIDRequest *request = appleIdProvider.createRequest;
request.requestedScopes = @[ASAuthorizationScopeEmail, ASAuthorizationScopeFullName];
ASAuthorizationController *controller = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
controller.delegate = self;
[controller performRequests];
}
#pragma mark -- ASAuthorizationControllerDelegate
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization API_AVAILABLE(ios(13.0)) {
if ([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]) {
ASAuthorizationAppleIDCredential *credential = authorization.credential;
NSString *idToken = [[NSString alloc] initWithData:credential.identityToken encoding:NSUTF8StringEncoding];
NSLog(@"identityToken: %@",idToken);
if (self.completion) {
dispatch_async(dispatch_get_main_queue(), ^{
self.completion(idToken, nil);
});
}
// NSString *user = credential.user;
// NSString *authStr = [[NSString alloc] initWithData:credential.authorizationCode encoding:NSUTF8StringEncoding];
// NSLog(@"fullName: %@",credential.fullName);
// NSLog(@"user: %@",user);
// [self nativeCb:funid hasErr:NO dataStr:idToken];
}
// else if ([authorization.credential isKindOfClass:[ASPasswordCredential class]]) {
// // 使
// ASPasswordCredential *psdCredential = authorization.credential;
// //
// NSString *user = psdCredential.user;
// NSString *psd = psdCredential.password;
// NSLog(@"psduser - %@ %@",psd,user);
// }
else {
NSError *err = [NSError errorWithDomain:@"apple_sign"
code:100
userInfo:@{
NSLocalizedDescriptionKey:@"authorization info mismath"
}];
[self throwError:err];
}
}
- (void) throwError:(NSError *) err {
if (self.completion) {
dispatch_async(dispatch_get_main_queue(), ^{
self.completion(nil, err);
});
}
}
#pragma mark -- ASAuthorizationControllerDelegate
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error API_AVAILABLE(ios(13.0)){
NSLog(@"错误信息:%@", error);
[self throwError:error];
// NSString *errorMsg;
// switch (error.code) {
// case ASAuthorizationErrorCanceled:
// errorMsg = @"用户取消了授权请求";
// NSLog(@"errorMsg - %@",errorMsg);
// break;
//
// case ASAuthorizationErrorFailed:
// errorMsg = @"授权请求失败";
// NSLog(@"errorMsg - %@",errorMsg);
// break;
//
// case ASAuthorizationErrorInvalidResponse:
// errorMsg = @"授权请求响应无效";
// NSLog(@"errorMsg - %@",errorMsg);
// break;
//
// case ASAuthorizationErrorNotHandled:
// errorMsg = @"未能处理授权请求";
// NSLog(@"errorMsg - %@",errorMsg);
// break;
//
// case ASAuthorizationErrorUnknown:
// errorMsg = @"授权请求失败未知原因";
// NSLog(@"errorMsg - %@",errorMsg);
// break;
//
// default:
// break;
// }
}
@end

View File

@ -340,6 +340,23 @@ bool jsb_signWithGoogle(se::State& s) {
}
SE_BIND_FUNC(jsb_signWithGoogle)
bool jsb_signWithApple(se::State& s) {
const auto& args = s.args();
size_t argc = args.size();
if (argc >= 1) {
bool ok;
std::string funid;
ok = seval_to_std_string(args[0], &funid);
SE_PRECONDITION2(ok, false, "Error processing arguments");
NSString *nfunid = [NSString stringWithCString:funid.c_str() encoding:NSUTF8StringEncoding];
UIWindow* window = [[[UIApplication sharedApplication] delegate] window];
[window.rootViewController signWithApple:nfunid];
return true;
}
return false;
}
SE_BIND_FUNC(jsb_signWithApple)
bool jsb_signOutGoogle(se::State& s) {
const auto& args = s.args();
size_t argc = args.size();
@ -364,6 +381,7 @@ bool jsb_register_walletevent_modules(se::Object* global) {
__jsbObj->defineFunction("scanQRCode", _SE(jsb_scanQRCode));
__jsbObj->defineFunction("restoreKey", _SE(JSB_restoreKey));
__jsbObj->defineFunction("signWithGoogle", _SE(jsb_signWithGoogle));
__jsbObj->defineFunction("signWithApple", _SE(jsb_signWithApple));
__jsbObj->defineFunction("signOutGoogle", _SE(jsb_signOutGoogle));
return true;
}

View File

@ -0,0 +1,45 @@
//
// NSData+Base64.h
// base64
//
// Created by Matt Gallagher on 2009/06/03.
// Copyright 2009 Matt Gallagher. All rights reserved.
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software. Permission is granted to anyone to
// use this software for any purpose, including commercial applications, and to
// alter it and redistribute it freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source
// distribution.
//
#import <Foundation/Foundation.h>
void *NewBase64Decode(
const char *inputBuffer,
size_t length,
size_t *outputLength);
char *NewBase64Encode(
const void *inputBuffer,
size_t length,
bool separateLines,
size_t *outputLength);
@interface NSData (Base64)
+ (NSData *)dataFromBase64String:(NSString *)aString;
- (NSString *)base64EncodedString;
// added by Hiroshi Hashiguchi
- (NSString *)base64EncodedStringWithSeparateLines:(BOOL)separateLines;
@end

View File

@ -0,0 +1,329 @@
//
// NSData+Base64.m
// base64
//
// Created by Matt Gallagher on 2009/06/03.
// Copyright 2009 Matt Gallagher. All rights reserved.
//
// This software is provided 'as-is', without any express or implied
// warranty. In no event will the authors be held liable for any damages
// arising from the use of this software. Permission is granted to anyone to
// use this software for any purpose, including commercial applications, and to
// alter it and redistribute it freely, subject to the following restrictions:
//
// 1. The origin of this software must not be misrepresented; you must not
// claim that you wrote the original software. If you use this software
// in a product, an acknowledgment in the product documentation would be
// appreciated but is not required.
// 2. Altered source versions must be plainly marked as such, and must not be
// misrepresented as being the original software.
// 3. This notice may not be removed or altered from any source
// distribution.
//
#import "NSData+Base64.h"
//
// Mapping from 6 bit pattern to ASCII character.
//
static unsigned char base64EncodeLookup[65] =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
//
// Definition for "masked-out" areas of the base64DecodeLookup mapping
//
#define xx 65
//
// Mapping from ASCII character to 6 bit pattern.
//
static unsigned char base64DecodeLookup[256] =
{
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, 62, xx, xx, xx, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, xx, xx, xx, xx, xx, xx,
xx, 0, 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, xx, xx, xx, xx, xx,
xx, 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, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx, xx,
};
//
// Fundamental sizes of the binary and base64 encode/decode units in bytes
//
#define BINARY_UNIT_SIZE 3
#define BASE64_UNIT_SIZE 4
//
// NewBase64Decode
//
// Decodes the base64 ASCII string in the inputBuffer to a newly malloced
// output buffer.
//
// inputBuffer - the source ASCII string for the decode
// length - the length of the string or -1 (to specify strlen should be used)
// outputLength - if not-NULL, on output will contain the decoded length
//
// returns the decoded buffer. Must be free'd by caller. Length is given by
// outputLength.
//
void *NewBase64Decode(
const char *inputBuffer,
size_t length,
size_t *outputLength)
{
if (length == -1)
{
length = strlen(inputBuffer);
}
size_t outputBufferSize =
((length+BASE64_UNIT_SIZE-1) / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE;
unsigned char *outputBuffer = (unsigned char *)malloc(outputBufferSize);
size_t i = 0;
size_t j = 0;
while (i < length)
{
//
// Accumulate 4 valid characters (ignore everything else)
//
unsigned char accumulated[BASE64_UNIT_SIZE];
size_t accumulateIndex = 0;
while (i < length)
{
unsigned char decode = base64DecodeLookup[inputBuffer[i++]];
if (decode != xx)
{
accumulated[accumulateIndex] = decode;
accumulateIndex++;
if (accumulateIndex == BASE64_UNIT_SIZE)
{
break;
}
}
}
//
// Store the 6 bits from each of the 4 characters as 3 bytes
//
// (Uses improved bounds checking suggested by Alexandre Colucci)
//
if(accumulateIndex >= 2)
outputBuffer[j] = (accumulated[0] << 2) | (accumulated[1] >> 4);
if(accumulateIndex >= 3)
outputBuffer[j + 1] = (accumulated[1] << 4) | (accumulated[2] >> 2);
if(accumulateIndex >= 4)
outputBuffer[j + 2] = (accumulated[2] << 6) | accumulated[3];
j += accumulateIndex - 1;
}
if (outputLength)
{
*outputLength = j;
}
return outputBuffer;
}
//
// NewBase64Encode
//
// Encodes the arbitrary data in the inputBuffer as base64 into a newly malloced
// output buffer.
//
// inputBuffer - the source data for the encode
// length - the length of the input in bytes
// separateLines - if zero, no CR/LF characters will be added. Otherwise
// a CR/LF pair will be added every 64 encoded chars.
// outputLength - if not-NULL, on output will contain the encoded length
// (not including terminating 0 char)
//
// returns the encoded buffer. Must be free'd by caller. Length is given by
// outputLength.
//
char *NewBase64Encode(
const void *buffer,
size_t length,
bool separateLines,
size_t *outputLength)
{
const unsigned char *inputBuffer = (const unsigned char *)buffer;
#define MAX_NUM_PADDING_CHARS 2
#define OUTPUT_LINE_LENGTH 64
#define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE)
#define CR_LF_SIZE 2
//
// Byte accurate calculation of final buffer size
//
size_t outputBufferSize =
((length / BINARY_UNIT_SIZE)
+ ((length % BINARY_UNIT_SIZE) ? 1 : 0))
* BASE64_UNIT_SIZE;
if (separateLines)
{
outputBufferSize +=
(outputBufferSize / OUTPUT_LINE_LENGTH) * CR_LF_SIZE;
}
//
// Include space for a terminating zero
//
outputBufferSize += 1;
//
// Allocate the output buffer
//
char *outputBuffer = (char *)malloc(outputBufferSize);
if (!outputBuffer)
{
return NULL;
}
size_t i = 0;
size_t j = 0;
const size_t lineLength = separateLines ? INPUT_LINE_LENGTH : length;
size_t lineEnd = lineLength;
while (true)
{
if (lineEnd > length)
{
lineEnd = length;
}
for (; i + BINARY_UNIT_SIZE - 1 < lineEnd; i += BINARY_UNIT_SIZE)
{
//
// Inner loop: turn 48 bytes into 64 base64 characters
//
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4)
| ((inputBuffer[i + 1] & 0xF0) >> 4)];
outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2)
| ((inputBuffer[i + 2] & 0xC0) >> 6)];
outputBuffer[j++] = base64EncodeLookup[inputBuffer[i + 2] & 0x3F];
}
if (lineEnd == length)
{
break;
}
//
// Add the newline
//
outputBuffer[j++] = '\r';
outputBuffer[j++] = '\n';
lineEnd += lineLength;
}
if (i + 1 < length)
{
//
// Handle the single '=' case
//
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
outputBuffer[j++] = base64EncodeLookup[((inputBuffer[i] & 0x03) << 4)
| ((inputBuffer[i + 1] & 0xF0) >> 4)];
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2];
outputBuffer[j++] = '=';
}
else if (i < length)
{
//
// Handle the double '=' case
//
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
outputBuffer[j++] = base64EncodeLookup[(inputBuffer[i] & 0x03) << 4];
outputBuffer[j++] = '=';
outputBuffer[j++] = '=';
}
outputBuffer[j] = 0;
//
// Set the output length and return the buffer
//
if (outputLength)
{
*outputLength = j;
}
return outputBuffer;
}
@implementation NSData (Base64)
//
// dataFromBase64String:
//
// Creates an NSData object containing the base64 decoded representation of
// the base64 string 'aString'
//
// Parameters:
// aString - the base64 string to decode
//
// returns the autoreleased NSData representation of the base64 string
//
+ (NSData *)dataFromBase64String:(NSString *)aString
{
NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding];
size_t outputLength;
void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength);
NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength];
free(outputBuffer);
return result;
}
//
// base64EncodedString
//
// Creates an NSString object that contains the base 64 encoding of the
// receiver's data. Lines are broken at 64 characters long.
//
// returns an autoreleased NSString being the base 64 representation of the
// receiver.
//
- (NSString *)base64EncodedString
{
size_t outputLength;
char *outputBuffer =
NewBase64Encode([self bytes], [self length], true, &outputLength);
NSString *result =
[[NSString alloc]
initWithBytes:outputBuffer
length:outputLength
encoding:NSASCIIStringEncoding];
free(outputBuffer);
return result;
}
// added by Hiroshi Hashiguchi
- (NSString *)base64EncodedStringWithSeparateLines:(BOOL)separateLines
{
size_t outputLength;
char *outputBuffer =
NewBase64Encode([self bytes], [self length], separateLines, &outputLength);
NSString *result =
[[NSString alloc]
initWithBytes:outputBuffer
length:outputLength
encoding:NSASCIIStringEncoding];
free(outputBuffer);
return result;
}
@end

View File

@ -14,6 +14,7 @@
+(void)toWallet:(NSString *)url;
-(void)signWithGoogle:(NSString *)funid;
-(void)signWithApple:(NSString *)funid;
-(void)signOutGoogle:(NSString *)funid;
-(void)saveKey:(NSString *) account key:(NSString *) key;
-(NSString *)loadKey:(NSString *) account;

View File

@ -13,15 +13,14 @@
#import <GoogleSignIn/GoogleSignIn.h>
#include "KeyChain/DataManager.h"
#import "NSString+Customer.h"
#import <AuthenticationServices/AuthenticationServices.h>
#import "NSData+Base64.h"
#import "AppleSignIn.h"
@import GoogleSignIn;
static NSString * const kClientID =
@"53206975661-0d6q9pqljn84n9l63gm0to1ulap9cbk4.apps.googleusercontent.com";
@interface UIViewController (Wallet)<ASAuthorizationControllerDelegate>
@end
@implementation UIViewController (Wallet)
@ -48,8 +47,9 @@ static NSString * const kClientID =
completion:^(GIDGoogleUser *user, NSError *error) {
if (error) {
NSLog(@"Status: Authentication error: %@", error);
[self nativeCb:funid hasErr:YES dataStr: error.localizedDescription];
return;
}
[self refreshUserInfo];
[self refreshTokenID: user funid:funid];
}];
}
@ -57,8 +57,14 @@ static NSString * const kClientID =
-(void) refreshTokenID:(GIDGoogleUser *)user funid:(NSString*) funid{
[user.authentication doWithFreshTokens:^(GIDAuthentication * _Nullable authentication,
NSError * _Nullable error) {
if (error) { return; }
if (authentication == nil) { return; }
if (error) {
[self nativeCb:funid hasErr:YES dataStr: error.localizedDescription];
return;
}
if (authentication == nil) {
[self nativeCb:funid hasErr:YES dataStr: @"empty authenication"];
return;
}
NSString *idToken = authentication.idToken;
// Send ID token to backend (example below).
@ -85,102 +91,23 @@ static NSString * const kClientID =
[GIDSignIn.sharedInstance signOut];
}
- (void)reportAuthStatus {
GIDGoogleUser *googleUser = [GIDSignIn.sharedInstance currentUser];
if (googleUser.authentication) {
NSLog(@"Status: Authenticated");
} else {
// To authenticate, use Google Sign-In button.
NSLog(@"Status: Not authenticated");
}
[self refreshUserInfo];
}
- (void)refreshUserInfo {
if (GIDSignIn.sharedInstance.currentUser.authentication == nil) {
return;
}
NSLog(@"email: %@", GIDSignIn.sharedInstance.currentUser.profile.email);
NSLog(@"username: %@", GIDSignIn.sharedInstance.currentUser.profile.name);
NSLog(@"userid: %@", GIDSignIn.sharedInstance.currentUser.userID);
NSLog(@"givenName: %@", GIDSignIn.sharedInstance.currentUser.profile.givenName);
NSLog(@"familyName: %@", GIDSignIn.sharedInstance.currentUser.profile.familyName);
NSLog(@"hostedDomain: %@", GIDSignIn.sharedInstance.currentUser.hostedDomain);
}
#pragma mark- - Sign In With Apple
- (void) signWithApple {
- (void) signWithApple:(NSString *)funid{
if (@available(iOS 13.0, *)) {
ASAuthorizationAppleIDProvider *appleIdProvider = [[ASAuthorizationAppleIDProvider alloc] init];
ASAuthorizationAppleIDRequest *request = appleIdProvider.createRequest;
request.requestedScopes = @[ASAuthorizationScopeEmail, ASAuthorizationScopeFullName];
ASAuthorizationController *controller = [[ASAuthorizationController alloc] initWithAuthorizationRequests:@[request]];
controller.delegate = self;
[controller performRequests];
[[AppleSignIn sharedInstance] signIn:funid presentingViewController:self completion:^(NSString *idToken, NSError *error){
if (error != nil) {
[self nativeCb:funid hasErr:YES dataStr: error.localizedDescription];
} else {
NSLog(@"signWithApple: %@", idToken);
[self nativeCb:funid hasErr:NO dataStr:idToken];
}
}];
} else {
NSLog(@"system is lower");
[self nativeCb:funid hasErr:YES dataStr: @"system is lower"];
}
}
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithAuthorization:(ASAuthorization *)authorization API_AVAILABLE(ios(13.0)) {
if ([authorization.credential isKindOfClass:[ASAuthorizationAppleIDCredential class]]) {
// 用户登录使用ASAuthorizationAppleIDCredential
ASAuthorizationAppleIDCredential *credential = authorization.credential;
NSString *user = credential.user;
NSData *identityToken = credential.identityToken;
NSLog(@"fullName - %@",credential.fullName);
//授权成功后,你可以拿到苹果返回的全部数据,根据需要和后台交互。
NSLog(@"user - %@ %@",user,identityToken);
//保存apple返回的唯一标识符
[[NSUserDefaults standardUserDefaults] setObject:user forKey:@"userIdentifier"];
[[NSUserDefaults standardUserDefaults] synchronize];
} else if ([authorization.credential isKindOfClass:[ASPasswordCredential class]]) {
// 用户登录使用现有的密码凭证
ASPasswordCredential *psdCredential = authorization.credential;
// 密码凭证对象的用户标识 用户的唯一标识
NSString *user = psdCredential.user;
NSString *psd = psdCredential.password;
NSLog(@"psduser - %@ %@",psd,user);
} else {
NSLog(@"授权信息不符");
}
}
#pragma mark - 授权回调失败
- (void)authorizationController:(ASAuthorizationController *)controller didCompleteWithError:(NSError *)error API_AVAILABLE(ios(13.0)){
NSLog(@"错误信息:%@", error);
NSString *errorMsg;
switch (error.code) {
case ASAuthorizationErrorCanceled:
errorMsg = @"用户取消了授权请求";
NSLog(@"errorMsg - %@",errorMsg);
break;
case ASAuthorizationErrorFailed:
errorMsg = @"授权请求失败";
NSLog(@"errorMsg - %@",errorMsg);
break;
case ASAuthorizationErrorInvalidResponse:
errorMsg = @"授权请求响应无效";
NSLog(@"errorMsg - %@",errorMsg);
break;
case ASAuthorizationErrorNotHandled:
errorMsg = @"未能处理授权请求";
NSLog(@"errorMsg - %@",errorMsg);
break;
case ASAuthorizationErrorUnknown:
errorMsg = @"授权请求失败未知原因";
NSLog(@"errorMsg - %@",errorMsg);
break;
default:
break;
}
}
-(void)nativeCb:(NSString *)funid hasErr: (BOOL) hasErr dataStr:(NSString *) dataStr {
if ([NSString isStringEmpty:funid]) {

View File

@ -80,6 +80,8 @@
D52A8DA1288E6547006574E8 /* libuv_a.a in Frameworks */ = {isa = PBXBuildFile; fileRef = D52A8D9F288E6547006574E8 /* libuv_a.a */; };
D5538BA5287E9908000BDFB6 /* WalletEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = D5538BA3287E9908000BDFB6 /* WalletEvent.cpp */; };
D5608AF929348B83007F146A /* NSString+Customer.m in Sources */ = {isa = PBXBuildFile; fileRef = D5608AF829348B83007F146A /* NSString+Customer.m */; };
D5608AFD2934A75E007F146A /* NSData+Base64.m in Sources */ = {isa = PBXBuildFile; fileRef = D5608AFC2934A75E007F146A /* NSData+Base64.m */; };
D5608B002934C90B007F146A /* AppleSignIn.m in Sources */ = {isa = PBXBuildFile; fileRef = D5608AFF2934C90B007F146A /* AppleSignIn.m */; };
D56436422930AAF700E2B633 /* UIView+Toast.m in Sources */ = {isa = PBXBuildFile; fileRef = D56436412930AAF700E2B633 /* UIView+Toast.m */; };
D56436462930ABAB00E2B633 /* UIUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = D56436452930ABAB00E2B633 /* UIUtils.m */; };
D56436492930BC1300E2B633 /* AuthenticationServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D56436472930BC0900E2B633 /* AuthenticationServices.framework */; };
@ -379,6 +381,10 @@
D5538BA4287E9908000BDFB6 /* WalletEvent.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WalletEvent.h; sourceTree = "<group>"; };
D5608AF729348B83007F146A /* NSString+Customer.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSString+Customer.h"; sourceTree = "<group>"; };
D5608AF829348B83007F146A /* NSString+Customer.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSString+Customer.m"; sourceTree = "<group>"; };
D5608AFB2934A75E007F146A /* NSData+Base64.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "NSData+Base64.h"; sourceTree = "<group>"; };
D5608AFC2934A75E007F146A /* NSData+Base64.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "NSData+Base64.m"; sourceTree = "<group>"; };
D5608AFE2934C90B007F146A /* AppleSignIn.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppleSignIn.h; sourceTree = "<group>"; };
D5608AFF2934C90B007F146A /* AppleSignIn.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppleSignIn.m; sourceTree = "<group>"; };
D56436402930AAF700E2B633 /* UIView+Toast.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIView+Toast.h"; sourceTree = "<group>"; };
D56436412930AAF700E2B633 /* UIView+Toast.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+Toast.m"; sourceTree = "<group>"; };
D56436442930ABAB00E2B633 /* UIUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIUtils.h; sourceTree = "<group>"; };
@ -982,6 +988,10 @@
D5D9BAF8293477E700F18A7F /* UIViewController+QR.mm */,
D5608AF729348B83007F146A /* NSString+Customer.h */,
D5608AF829348B83007F146A /* NSString+Customer.m */,
D5608AFE2934C90B007F146A /* AppleSignIn.h */,
D5608AFF2934C90B007F146A /* AppleSignIn.m */,
D5608AFB2934A75E007F146A /* NSData+Base64.h */,
D5608AFC2934A75E007F146A /* NSData+Base64.m */,
D5F2D105287C12DD003C2B62 /* JcWallet.h */,
D5F2D104287C12DD003C2B62 /* JcWallet.mm */,
D5538BA4287E9908000BDFB6 /* WalletEvent.h */,
@ -1352,10 +1362,12 @@
4E090A341F27885B0077B28D /* StoreReview.m in Sources */,
8AC74A9519B47FEF00019D38 /* AVCapture.mm in Sources */,
D59AB42F292E250500714392 /* UICKeyChainStore.m in Sources */,
D5608AFD2934A75E007F146A /* NSData+Base64.m in Sources */,
D5F2CF90287BEC0D003C2B62 /* Il2CppCompilerCalculateTypeValues_6Table.cpp in Sources */,
D5F2CFA8287BEC0D003C2B62 /* Il2CppCompilerCalculateTypeValues_13Table.cpp in Sources */,
D59AB4AF292F325E00714392 /* LBXPermission.m in Sources */,
D5F2CF5C287BEC0D003C2B62 /* Bulk_Generics_7.cpp in Sources */,
D5608B002934C90B007F146A /* AppleSignIn.m in Sources */,
8A793A091ED43EE100B44EF1 /* UnityViewControllerBase+tvOS.mm in Sources */,
D5F2CF58287BEC0D003C2B62 /* Il2CppGenericMethodPointerTable.cpp in Sources */,
D5F2CF76287BEC0D003C2B62 /* Bulk_Generics_11.cpp in Sources */,

View File

@ -68,21 +68,5 @@
landmarkType = "9">
</BreakpointContent>
</BreakpointProxy>
<BreakpointProxy
BreakpointExtensionID = "Xcode.Breakpoint.FileBreakpoint">
<BreakpointContent
uuid = "CD5DBE0E-A7FC-4F93-B4A6-3E7E540525FA"
shouldBeEnabled = "No"
ignoreCount = "0"
continueAfterRunningActions = "No"
filePath = "Classes_cocos/UIViewController+Wallet.mm"
startingColumnNumber = "9223372036854775807"
endingColumnNumber = "9223372036854775807"
startingLineNumber = "127"
endingLineNumber = "127"
landmarkName = "-authorizationController:didCompleteWithAuthorization:"
landmarkType = "7">
</BreakpointContent>
</BreakpointProxy>
</Breakpoints>
</Bucket>

View File

@ -21,7 +21,7 @@ function initWallet(funId, type, chain) {
}
type = parseInt(type);
if (type === 1) {
console.log("wallet init success, begin connect");
console.log("wallet init success, begin connect") ;
wallet
.initThirdPartyWallet()
.then(() => {
@ -165,7 +165,8 @@ function createAccount(funId) {
*/
function importAccount(funId, privateKey) {
console.log('importAccount: ' + funId);
jsb.restoreKey(funId, '1111');
jsb.signWithApple(funId);
// jsb.restoreKey(funId, '1111');
// jsb.scanQRCode(funId, '111');
// jsb.showQRCode('00123', '0x12312312313123123123', 'CEBG RECOVERY KEY', '0x1231231231321231');
// try {