2016-06-20 2 views
2

Cloudbase 메시징을 통해 Firebase 콘솔에서 원격 알림을 보내려고하지만 내 전화에서 경고를받지 못했습니다. 이미 Firebase에 인증서를 업로드했으며 Firebase 튜토리얼에서 제공하는 기본 코드를 사용하여 알림을 수신합니다. 여기 Firebase 원격 알림을 수신하지 못합니까?

내가 이미 Picture

여기에 내가뿐만 아니라 그것을 구현하는 내 코드는 을 만든 것을 보여주는 내 인증서의 사진입니다. 클래스 AppDelegate에 : 그것은 당신의 마지막 편집을 기반으로 보인다

Warning: Application delegate received call to -application:didReceiveRemoteNotification:fetchCompletionHandler: but the completion handler was never called.

+0

http://stackoverflow.com/a/37670233 – Shubhank

+0

은 솔루션부터 코드를 복사하여 붙여 시도했지만 그것은 나를 ") self.tokenRefreshNotificaiton 이름"에서 오류가 프로그래머 내가 엑스 코드 7.3에있어 알려줍니다 .1 – Tim

+0

경고를 기반으로 - github 샘플을 확인하고 https://github.com/firebase/quickstart-ios/blob/master/messaging/FCMSwift/AppDelegate.swift#L50을 구현해야합니다. – Shubhank

답변

1

, 당신이 : UIResponder, UIApplicationDelegate 더 디버깅시 {

var window: UIWindow? 

override init() { 
    FIRApp.configure() 
    FIRDatabase.database().persistenceEnabled = true 
} 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    let notificationTypes : UIUserNotificationType = [UIUserNotificationType.Alert, UIUserNotificationType.Badge, UIUserNotificationType.Sound] 
    let notificationSettings = UIUserNotificationSettings(forTypes: notificationTypes, categories: nil) 
    application.registerForRemoteNotifications() 
    application.registerUserNotificationSettings(notificationSettings) 

    return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 
} 

func application(application: UIApplication, 
    openURL url: NSURL, 
    sourceApplication: String?, 
    annotation: AnyObject) -> Bool { 
     return FBSDKApplicationDelegate.sharedInstance().application(
      application, 
      openURL: url, 
      sourceApplication: sourceApplication, 
      annotation: annotation) 
} 

func applicationDidBecomeActive(application: UIApplication) { 
    // Restart any tasks that were paused (or not yet started) while the application was inactive. If the application was previously in the background, optionally refresh the user interface. 

    FBSDKAppEvents.activateApp() 
} 

func application(application: UIApplication, didReceiveRemoteNotification userInfo: [NSObject : AnyObject], 
       fetchCompletionHandler completionHandler: (UIBackgroundFetchResult) -> Void) { 
    // If you are receiving a notification message while your app is in the background, 
    // this callback will not be fired till the user taps on the notification launching the application. 
    // TODO: Handle data of notification 

    // Print message ID. 
    print("Message ID: \(userInfo["gcm.message_id"]!)") 

    // Print full message. 
    print("%@", userInfo) 
} 

편집 , 내 이제 콘솔이 오류를 인쇄 통지를 수신한다. 그렇지 않으면 완성 처리기가 호출되지 않는다는 경고를 사용자에게주지 않을 것입니다.

완성 처리기를 호출하여 경고를 제거하고 iOS를 행복하게 만들 수 있습니다. 예를 들어,

앱을 다운로드하는 데 필요한 통지와 관련된 새로운 데이터가 없다고 아이폰 OS를 말하고있다

completionHandler(.NoData)

.

+0

내 문제를 해결해 주셔서 감사합니다! – Tim

+0

내 알림이 배경에 있지 않고 앱 안에 있더라도 팝업을 표시하는 방법이 있습니까? 지금은 앱 내부에 있다면 알림이 표시되지 않지만 화면이 잠겨 있거나 다른 앱/집에 있으면 표시됩니다. – Tim

+0

아니요. 그것이 iOS 작동 방식입니다. 앱이 백그라운드에있는 경우 iOS가 알림을 표시합니다. 그러나 앱이 포 그라운드에있는 경우 앱에서 알림을 표시하는 작업을 수행하므로 iOS에서 사용자에게 아무 것도 표시하지 않습니다. 어쨌든 고맙습니다. –

관련 문제