didRegisterForRemoteNotificationsWithDeviceToken이 호출되지 않는 이유


89

애플 푸시 알림 서비스를 구현하고 싶은 앱을 만들고 있습니다. 이 자습서에 제공된 단계별 지침을 따르고 있습니다 .

그러나 여전히 메서드는 호출되지 않습니다. 문제의 원인을 모르겠습니다. 누구든지 나를 도울 수 있습니까?

    - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 
        //NSString * token = [[NSString alloc] initWithData:deviceTokenencoding:NSUTF8StringEncoding];
        NSString *str = [NSString stringWithFormat:@"Device Token=%@",deviceToken];
        NSLog(@"Device Token:%@",str);

        //NSLog(@"Device token is called");
        //const void *devTokenBytes = [deviceToken bytes];
        //NSLog(@"Device Token");
    }

    - (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)err { 
        NSString *str = [NSString stringWithFormat: @"Error: %@", err];
        NSLog(@"Error:%@",str);    
    }

다른 코드를 추가 할 필요가 없습니다. 링크를 확인하십시오. stackoverflow.com/a/39849892/3269536
jenish

답변:


74

나는 같은 문제가 있었다 : 호출도 registerForRemoteNotificationTypes:호출 application:didRegisterForRemoteNotificationsWithDeviceToken:application:didFailToRegisterForRemoteNotificationsWithError:

나는 결국 Apple의 기술 노트 TN2265 의 도움으로이 문제를 해결했습니다 .

이것이 내가 한 일입니다.

먼저, "aps-environment"키에 대한 프로비저닝 프로필 및 .app 파일 자체의 코드 서명을 확인하는 것을 포함하여 실제로 Push Notifications에 올바르게 등록 하고 있는지 다시 확인했습니다 . 나는 모든 것을 올바르게 설정했습니다.

그런 다음 콘솔에서 푸시 알림 상태 메시지를 디버깅해야했습니다 (장치에 PersistentConnectionLogging.mobileconfig 프로비저닝 프로파일을 설치하고 재부팅해야합니다. "푸시 상태 메시지 관찰"에서 TN2265 참조 ). apns 프로세스가 타이머를 시작하고 최소 실행 날짜를 계산하는 것으로 나타났습니다. 이로 인해 일반적으로이 시점에 표시되는 Push-Notification 등록 확인 메시지가 TN2265에 표시된대로 APNS에 의해 억제되는 것으로 의심됩니다.

iOS에서 푸시 알림 권한 경고 재설정

푸시 지원 앱이 처음으로 푸시 알림을 등록하면 iOS는 사용자에게 해당 앱에 대한 알림을받을 것인지 묻습니다. 사용자가이 경고에 응답하면 기기가 복원되거나 앱이 적어도 하루 동안 제거되지 않는 한 다시 표시되지 않습니다.

앱을 처음 실행하는 것을 시뮬레이션하려면 하루 동안 앱을 제거한 상태로 둘 수 있습니다. 시스템 시계를 하루 이상 앞으로 설정하고 장치를 완전히 껐다가 다시 켜면 실제로 하루를 기다리지 않고도 후자를 얻을 수 있습니다.

그래서 기기에서 앱을 제거한 다음 설정에서 iPhone 날짜를 수동으로 변경하고 기기를 재부팅 한 다음 앱을 다시 설치했습니다.

다음에 내 코드가를 호출 registerForRemoteNotificationTypes했을 때 예상대로 콜백을 받았습니다.

이것은 나를 위해 문제를 해결했습니다. 도움이 되었기를 바랍니다.


1
저에게 중요한 점은 다른 컴퓨터에서 이전 개발 인증서를 사용하고 있다는 것입니다. 기본 개발 노트북에서 최신 인증서를 전송하면이 문제가 해결되었습니다.
Markus Rautopuro

3
푸시 알림을 활성화 한 후 프로비저닝 프로파일을 다시 생성해야합니다.
Tony

3
안녕하세요! 이것은 오래된 게시물이지만 앱의 모든 알림 설정을 끄고 켜면 때때로 수정된다는 것을 알았습니다. 지난번에 didRegisterForRemoteNotificationsWithDeviceToken이 호출되었을 때 갑자기 호출되지 않았기 때문입니다. 도움이 되었기를 바랍니다.
otakuProgrammer 2014

1
다른 재설정 단계를 추가하여이 작업을 수행했습니다. 1. 앱 삭제 2. 기기 재설정 3. 시계 1 일 이상 전달 4. 기기 재설정 5. 이제 설치하면 푸시 알림 경고가 표시됩니다.
etayluz

또한 Xcode 또는 장치 자체에 동일한 개발 프로비저닝 프로파일의 "유효한"복사본이 여러 개 없는지 확인하는 것도 중요합니다. 새 APN 인증서를 생성하고 이전 인증서가 만료 된 후 프로비저닝 프로파일을 다시 생성했을 수 있습니다. 이전 개발 프로필은 여전히 ​​개발 프로필로 유효하지만 APN을 활성화하는 데 충분하지 않습니다. "유효한 aps-entitlement blah blah"에 대한 일반적인 오류가 표시됩니다.
jaredsinclair

66

iOS 8에서는 일부 메서드가 더 이상 사용되지 않습니다. iOS 8 호환성을 위해 아래 단계를 따르십시오.

1. 등록 통지

if([[UIDevice currentDevice] systemVersion].floatValue >= 8.0)
{
    UIUserNotificationSettings* notificationSettings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:notificationSettings];    
}
else
{
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound|UIRemoteNotificationTypeBadge)];
}

2. 새로운 2 가지 방법 추가

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
{
    //register to receive notifications
    [application registerForRemoteNotifications];
}

//For interactive notification only
- (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
{
    //handle the actions
    if ([identifier isEqualToString:@"declineAction"]){
    }
    else if ([identifier isEqualToString:@"answerAction"]){
    }
}

참고 : 위의 두 가지 새로운 메서드는 iOS 8에서 didRegisterForRemoteNotificationsWithDeviceTokendidReceiveRemoteNotification.. 그 외에는 델리게이트 메서드가 호출되지 않습니다.

참조 : 원격 알림 iOS 8


1
이 두 가지 새로운 방법이 Appdelegate.m에 있어야합니까?
Ethan Parker

-(void) application : (UIApplication *) application didRegisterUserNotificationSettings : (UIUserNotificationSettings *) notificationSettings {// 알림 수신 등록 [application registerForRemoteNotifications]; } 다음을 추가하는 것은 위험합니다. 휴대 전화가 다운되어이 시점에서 공장 초기화조차 할 수 없습니다.

이것은 아마도 당신이 여기에서 끝나는 경우 찾고있는 대답 일 것입니다. 이상하게도 오늘 초에 이러한 메서드 중 하나를 추가하지 않고 대리자가 호출되었습니다. 이제 둘 다 필요한 것 같습니다.

내 응용 프로그램은이 라인에 충돌[application registerForRemoteNotifications];
smithyy

26

iOS 8 에서는 푸시 알림 액세스를 다르게 요청하는 것 외에도 다르게 등록해야합니다.

접근 요청:

if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
    // iOS 8
    UIUserNotificationSettings* settings = [UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound categories:nil];
    [[UIApplication sharedApplication] registerUserNotificationSettings:settings];
} else {
    // iOS 7 or iOS 6
    [[UIApplication sharedApplication] registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)];
}

등록 된 장치 처리 :

// New in iOS 8
- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
    [application registerForRemoteNotifications];
}

// iOS 7 or iOS 6
- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSString *token = [[deviceToken description] stringByTrimmingCharactersInSet: [NSCharacterSet characterSetWithCharactersInString:@"<>"]];
    token = [token stringByReplacingOccurrencesOfString:@" " withString:@""];
    // Send token to server
}

매우 유용합니다. 내 알림이 왜 깨 졌는지 알 수 없었습니다.
GoldenJoe 2014 년

4
iOS 8에서 토큰을 어떻게 얻을 수 있습니까?
Yossi 2011

@Yossi는 "토큰"변수에 저장됩니다application:didRegisterForRemoteNotificationsWithDeviceToken:
Kyle Clegg

내 앱이이 줄 [application registerForRemoteNotifications]과 충돌합니다.
smithyy

13

시뮬레이터에서는 원격 알림이 지원되지 않습니다. 따라서 시뮬레이터에서 앱을 실행하면 didRegisterForRemoteNotificationsWithDeviceToken호출되지 않습니다.


@hochl : 질문에보다 구체적으로 답변하도록 답변을 업데이트했습니다.
에릭

1
didFailToRegisterForRemoteNotificationsWithError도 호출되지 않습니다. 실제로 설정에서 앱에 대한 푸시 알림을 비활성화하면 (기기 또는 시뮬레이터에서) 알림이 호출되지 않습니다. 애플은 오류로 이것을 생각하지 않는 것 stackoverflow.com/questions/9199935/...
잭 모리스에게

12

코드를 호출해야합니다 (지원되는 알림 종류에 따라 업데이트).

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound];

프로비저닝 프로파일은 APNS가 활성화되어 있습니다. APNS를 설정 한 후 프로비저닝 프로파일을 다시 다운로드해야 할 수 있습니다. 문제가 발생하고 오류가 발생하면 Entitlements.plist를 만들고 빌드 종류에 따라 값이 "development"또는 "production"인 "aps-environment"키를 추가해야합니다 (일반적으로이 키-값 쌍은 프로비저닝 프로파일에 포함되어 있지만 때때로 Xcode가 엉망으로 만듭니다).


참고 : "프로비저닝 프로필은 APNS가 활성화되어 있습니다." 프로젝트 트리> 기능> 푸시 알림을 ON으로 설정해야합니다.
trevorgrayson

6

Apple 푸시 알림 서비스를 활성화 및 구성하기 전에 프로비저닝 프로파일이 사용 된 경우 프로비저닝 프로파일을 다시 다운로드해야합니다.

Xcode Organizer 및 iPhone / iPad에서 프로비저닝 프로파일을 삭제합니다. 로 이동하십시오 Settings -> General -> Profiles -> [Your provisioning] -> Remove.

새로 다운로드 한 프로비저닝 프로파일을 설치하십시오. 그런 다음 XCode에서 프로젝트를 정리하고 실행하십시오. 이제 didRegisterForRemoteNotificationsWithDeviceToken호출해야합니다.


그것은 나를 위해 일합니다. 앱에 APN을 등록한 인증 및 프로비저닝을 선택했습니다.

나는 아이폰 (ios9)에서 모든 프로비저닝 프로파일을 삭제 한 다음 장치 토큰이 수신 된 후이 문제를 해결하는 데 4 시간을 소요합니다 (많은 것을 배우지 만). 감사합니다
Shobhakar Tiwari

3

나는 실수를 저질렀 고 여기로 이끄는 구현 세부 사항을 간과했습니다. 나중에 응용 프로그램 온 보딩 프로세스에서 사용자에게 푸시 알림을 요청하고 멋지게 만들려고했기 때문에 사용자 지정 UIView에 registerForRemoteNotificationTypes, didRegisterForRemoteNotificationsWithDeviceToken그리고 didFailToRegisterForRemoteNotificationsWithError모두를 포함했습니다.

FIX 다음 didRegisterForRemoteNotificationsWithDeviceTokendidFailToRegisterForRemoteNotificationsWithError필요가있을하는 UIApplicationDelegate( YourAppDelegate.m) 트리거합니다.

지금 당연해 보인다.


예 방법은 필요 에로 AppDelegate. 나는이 간단한 대답에 내 지난 몇 시간 낭비 믿을 수 없어
심지어 쳉을

3

인터넷 연결이 켜져 있는지 확인하십시오. 인터넷 연결로 인해 직장 알림을받는 데 몇 시간이 걸렸습니다.


3

기존 앱 ID에 푸시를 추가 한 경우 프로비저닝 프로파일을 다시 생성해야합니다. 그렇지 않은 경우 프로필은 앱 ID에 대한 푸시 활성화에 대해 알지 못합니다.


3

나를 위해 일해보십시오.

첫 번째 단계

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions

위의 방법에서 아래 코드를 추가하십시오.

 UIApplication *application = [UIApplication sharedApplication];
 if ([application respondsToSelector:@selector(registerUserNotificationSettings:)]) {
UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:(UIUserNotificationTypeBadge
                                                                                     |UIUserNotificationTypeSound
                                                                                     |UIUserNotificationTypeAlert) categories:nil];
[application registerUserNotificationSettings:settings];
 } 
 else {
      UIRemoteNotificationType myTypes = UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound;
[application registerForRemoteNotificationTypes:myTypes];
     }

두번째 단계

아래 코드 기능 추가

 #ifdef __IPHONE_8_0
   - (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings
   {
  //register to receive notifications
  [application registerForRemoteNotifications];
  }

 - (void)application:(UIApplication *)application handleActionWithIdentifier:(NSString *)identifier forRemoteNotification:(NSDictionary *)userInfo completionHandler:(void(^)())completionHandler
  {
    //handle the actions
    if ([identifier isEqualToString:@"declineAction"]){
    }
   else if ([identifier isEqualToString:@"answerAction"]){
   }
}
 #endif

아래 기능에서 장치 토큰을 얻을 수 있습니다.

 - (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken 

자세한 답변은 여기 를 참조하십시오

이것이 누군가에게 도움이되기를 바랍니다.


2
-​(BOOL)application:(UIApplication​*)application​ didFinishLaunchingWithOptions:(NSDictionary​*)launchOptions​{​​​​ ​​​​ ​​​​//​Override​point​for​customization​after​application​launch.
​​​​//​Add​the​view​controller’s​view​to​the​window​and​display. ​​​​[window​addSubview:viewController.view]; ​​​​[window​makeKeyAndVisible];
NSLog(@”Registering for push notifications...”);
 [[UIApplication sharedApplication]
registerForRemoteNotificationTypes: (UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeBadge |
UIRemoteNotificationTypeSound)]; 
​​​​returnYES;
}


- (void)application:(UIApplication *)app didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
}
NSString *str = [NSString stringWithFormat:@”Device Token=%@”,deviceToken];
NSLog(@”%@”, str);


- (void)application:(UIApplication *)app didFailToRegisterForRemoteNotificationsWithError:(NSError *)err {
NSString *str = [NSString stringWithFormat: @”Error: %@”, err]; NSLog(@”%@”, str);
}


- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo {
}
for (id key in userInfo) { NSLog(@”key: %@, value: %@”, key, [userInfo objectForKey:key]);
}

2

장치 토큰을 얻기위한 최소 요구 사항 :

앱 ID, 프로비저닝 또는 인증서 등을 구성 할 필요가 없으므로 위임 메서드 didRegisterForRemoteNotificationsWithDeviceToken 을 가져 오기 위해 설정된 코드 서명이 없습니다 .

기본 설정을 사용하여 단일보기를 위해 Xcode 7에서 새 iOS 프로젝트를 방금 생성했고, 애플 개발 포털에서 구성되지 않은 com.mycompany.pushtest와 같은 임의의 번들 ID를 제공했습니다.

다음 코드를 사용하면 WIFI에 대한 인터넷 액세스가 가능한 iPad의 didRegisterForRemoteNotificationsWithDeviceToken 메서드에서 장치 토큰을 얻습니다 . 내 장치가 연결되어 있고 xcode에서 직접 앱을 실행하고 xcode의 콘솔에서 값을 봅니다.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions   

{  
    if ([application respondsToSelector:@selector(registerUserNotificationSettings:)])  
    {  
        UIUserNotificationType userNotificationTypes = (UIUserNotificationTypeAlert | UIUserNotificationTypeBadge | UIUserNotificationTypeSound);  
        UIUserNotificationSettings *settings = [UIUserNotificationSettings settingsForTypes:userNotificationTypes categories:nil];  
        [application registerUserNotificationSettings:settings];  
        [application registerForRemoteNotifications];  
    }  
    else  
    {  
        // Register for Push Notifications, if running iOS version < 8  
        [application registerForRemoteNotificationTypes:(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound)];  
    }  
    return YES;  
}  


- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error {
    NSLog(@"Error: %@", error.description);
}

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken {
    NSLog(@"didRegisterForRemoteNotificationsWithDeviceToken: %@", deviceToken);
}

- (void)application:(UIApplication *)application didRegisterUserNotificationSettings:(UIUserNotificationSettings *)notificationSettings {
    NSLog(@"NotificationSettings: %@", notificationSettings);
}

1

나는 이것에 대한 요점이 있습니다. 최근 나도이 문제에 직면했습니다. 문서에 따라 모든 것을 수행했지만 위임 메서드가 호출되지 않았습니다. 마지막으로 네트워크에 문제가 있다는 하나의 게시물을 보았습니다. 그런 다음 네트워크를 변경하고 정상적으로 작동합니다. 따라서 APNS를 차단할 수있는 네트워크가 거의 없기 때문에 네트워크에도주의하십시오.


1

가장 성가신 3 시간을 낭비한 후 문제를 해결하는 단계는 다음과 같습니다.

  1. 앱 삭제

  2. 장치 재설정

  3. 다시 뛰어

방금 작동했습니다.


0

이것은 전화의 모든 데이터를 재설정하고 삭제했기 때문에 나에게 일어났습니다 (개발 전화를 사용하고 싶음). 이로 인해 전화를 다시 설정 한 후 APN이 전혀 연결되지 않았습니다.

나는 모든 종류의 것을 시도했지만 그것을 고친 유일한 것은 새로운 SIM 카드 아래에서 이동 통신사와 작동하도록 전화를 설정하는 것뿐이었습니다.

이 링크는 진행 상황에 대한 더 많은 힌트를 제공합니다 : https://developer.apple.com/library/ios/technotes/tn2265/_index.html

APN은 Wi-Fi가 아닌 캐리어 / 타워를 통해 우선적으로 연결하려고합니다. 아마도 문제는 Wi-Fi 네트워크의 5223 포트를 차단하는 라우터에서 문제가 발생했을 수도 있지만 글로벌 재설정이 발생하기 전날에는 제대로 작동했기 때문에 의심 스럽습니다.


0

나에게 해결 된 것은 빌드 설정으로 이동하고 코드 서명 섹션에서 코드 서명 ID 및 프로비저닝 프로필을 수동으로 선택하는 것이 었습니다. 분명히 자동 설정이 올바른 것을 선택하지 않았기 때문에 앱이 제대로 인증되지 않았습니다.


0

앱의 푸시 메시지를 종료하면

appdidRegisterForRemoteNotificationsWithDeviceToken이 호출되지 않습니다.


0

또한 Apple https://developer.apple.com/system-status/ 에서 시스템 상태를 확인하는 것을 잊지 마십시오 .

위에 게시 된 모든 솔루션을 시도했지만 결국 결함은 APNS 서비스가 다운 되었기 때문입니다! 다음날 모든 것이 예상대로 다시 작동했습니다.

또한 콜백 메서드에 오타가 있습니다.

- (void)application:(UIApplication *)appdidRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

Rupesh가 지적했듯이 올바른 메서드 이름은 다음과 같습니다.

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken

그것이 아마도 귀하의 경우 토큰을받지 못한 이유 일 것입니다!


실제로 메소드 이름이 잘못, 그것은해야합니다 - (무효) 응용 프로그램 : (UIApplication *) 응용 프로그램 didRegisterForRemoteNotificationsWithDeviceToken : (을 NSData *) deviceToken이 매개 변수 사이에 공백이
Rupesh

감사합니다. 귀하의 의견을 포함하도록 답변을 업데이트했습니다. 이것이 OP 문제에 대한 해결책이라고 확신하지만 우리는 결코 알 수 없습니다!
Brett

0

didFinishLaunchingWithOptions에서 registerForNotifications 메소드를 호출해야합니다.

 func registerForNotifications(){

        if #available(iOS 10.0, *) {

            let center = UNUserNotificationCenter.current()
            center.delegate = self
            center.requestAuthorization(options:[.alert,.sound,.badge]) { (granted, error) in
                if granted{
                    UIApplication.shared.registerForRemoteNotifications()
                }else{

                    print("Notification permission denied.")

                }
            }

        } else {

            // For iOS 9 and Below
            let type: UIUserNotificationType = [.alert,.sound,.badge];
            let setting = UIUserNotificationSettings(types: type, categories: nil);
            UIApplication.shared.registerUserNotificationSettings(setting);
            UIApplication.shared.registerForRemoteNotifications()
        }
    }

 func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {

        let token = String(format: "%@", deviceToken as CVarArg).trimmingCharacters(in: CharacterSet(charactersIn: "<>")).replacingOccurrences(of: " ", with: "")
        print(token)

    }


extension AppDelegate : UNUserNotificationCenterDelegate{

    @available(iOS 10.0, *)

    func userNotificationCenter(_ center: UNUserNotificationCenter,  willPresent notification: UNNotification, withCompletionHandler   completionHandler: @escaping (_ options:   UNNotificationPresentationOptions) -> Void) {
        print("Handle push from foreground”)

        let info = ((notification.request.content.userInfo as NSDictionary).value(forKey: "aps") as! NSDictionary)
        if let type = info.value(forKey: "type") as? Int{
            if type == 0 {  

         // notification received ,Handle your notification here

            }
        }
    }

    @available(iOS 10.0, *)

    func userNotificationCenter(_ center: UNUserNotificationCenter, didReceive response: UNNotificationResponse, withCompletionHandler completionHandler: @escaping () -> Void) {

        print("Handle push from background or closed")

        let info = ((response.notification.request.content.userInfo as NSDictionary).value(forKey: "aps") as! NSDictionary)
        if let type = info.value(forKey: "type") as? Int{
            if type == 0 {   

            // notification received ,Handle your notification here
            }
        }
    }
}

0

내 푸시 알림 콜백이 내가 포함 한 타사 라이브러리, 즉 Firebase에 의해 도용되는 다른 문제가있었습니다. 이러한 라이브러리는 푸시 알림 콜백 메서드를 섞어 콜백을 가져옵니다.

이것이 누군가를 돕기를 바랍니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.