저는 IOS 앱을 개발하는 초보자입니다. 이제 AppDelegate의 메소드에서 mainTextController로 refreshToken 데이터를 보내려고합니다. 다운로드 할 때 처음으로 가져올 수 없습니다. 그러나 두 번째로 나는 그것을 얻을 수있다. 처음 생성 할 때 약간의 시간이 걸리고 나중에 저장된다고 생각합니다. AppDelegate에서 ViewController로 메서드에서 데이터를 보내는 방법을 알려주십시오. 궁극적으로, 나는 그것을 데이터베이스에 저장하고 서버 측에서 사용자에게 푸시 알림 메시지를 보내려고합니다. 다음 코드를 사용합니다.어떻게 refreshTooken을 viewcontroller에서 appdelegate로 보내야합니까?
//AppDelegate.h
@class ViewController;
#import <UIKit/UIKit.h>
#import "ViewController.h"
@interface AppDelegate : UIResponder <UIApplicationDelegate>
@property (weak, nonatomic) ViewController *myViewController;
@property (strong, nonatomic) UIWindow *window;
@property (weak, nonatomic) IBOutlet UIWebView *webView;
@end
//AppDelegate.m
- (void)tokenRefreshCallback: (NSNotification *)notification {
NSString *refreshToken = [[FIRInstanceID instanceID] token];
NSLog(@"InstanceID token: %@", refreshToken);
//
if(refreshToken){
[[NSUserDefaults standardUserDefaults] setObject:refreshToken forKey:@"token"];
[[NSUserDefaults standardUserDefaults] synchronize];
}
// Connect to FCM since connection may have failed when attempted before having a token.
[self connectToFirebase];
}
//ViewController.h
#import <UIKit/UIKit.h>
#import "AppDelegate.h"
@interface ViewController : UIViewController
@end
//ViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
appDelegate.myViewController = self;
//get tokenId
NSString *token = [[NSUserDefaults standardUserDefaults] objectForKey:@"token"];
if(token){
NSLog(@"i have token~!!!: %@ ", token);
}else NSLog(@"no token!: %@ ", token);
// Do any additional setup after loading the view, typically from a nib.
}
감사합니다.
그래, 처음으로 토큰 값을 얻지 못했습니까? –
어떤 메소드가'tokenRefreshCallback'에 대한 알림을 트리거하고 있습니까? 그것은 비동기로 보일 것입니다 - 그래서 ViewController에서 처음 호출 할 때 토큰은 아직 설정되지 않았습니다. 두 번째로 콜백이 호출되고 토큰이 저장됩니다. – dmorrow