2017-01-27 1 views
2

CloudKit 레코드에 대한 구독을 설정하려고합니다. 구독으로 OK가 생성되고 CKFetchSubscriptionsOperation으로 성공적으로 검색 할 수 있습니다. 알림에 대한iOS CloudKit에서 푸시 알림을 수신하지 않습니다.

let database = CKContainer.default().privateCloudDatabase 
let subscription = CKSubscription(recordType: "Device", predicate: NSPredicate(format: "TRUEPREDICATE"), options: .firesOnRecordUpdate) 

let notificationInfo = CKNotificationInfo() 
notificationInfo.alertLocalizationKey = "DEVICE_UPDATED" 
notificationInfo.alertBody = "Device updated in database" 

subscription.notificationInfo = notificationInfo 

database.save(subscription) { subscription, error in 
    if error != nil { 
     print(error?.localizedDescription as Any) 
    } else { 
     print(subscription) 
    } 
} 

등록 등록은 다음과 같습니다 그러나 기능 application(_:didReceiveRemoteNotification:)는 는 구독이 방법으로 잘 살고있다

(I 대시 보드에 손으로 기록을 변경있어) ... 호출되지 않습니다 :

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {   
    let notificationSettings = UIUserNotificationSettings(types: [.alert, .badge], categories: nil) 
    application.registerUserNotificationSettings(notificationSettings) 
    application.registerForRemoteNotifications() 

    return true 
} 

func application(_ application: UIApplication, didReceiveRemoteNotification userInfo: [AnyHashable : Any]) { 
    print(userInfo) 
} 
+0

앱을 실제 기기 또는 시뮬레이터에서 실행하고 있습니까? – Paulw11

+0

그래, 둘 다 시도했다 – Claw

+1

알림은 시뮬레이터에서 작동하지 않지만 실제 장치는 괜찮습니다. app delegate에서'application (_ application : UIApplication, didReceiveRemoteNotification userInfo : [AnyHashable : Any], fetchCompletionHandler completionHandler : @ 이스케이프 (UIBackgroundFetchResult) -> Void)'을 구현해보십시오. 'func 응용 프로그램 (_ 응용 프로그램 : UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken : Data)'에 대한 호출이 있습니까? – Paulw11

답변

1

좋아, 내가 푸시 알림을 활성화하고 생성 "애플 푸시 알림 서비스 SSL 인증서를"애플 개발자 프로비저닝 프로파일 페이지에서 내 응용 프로그램에 첨부했다

+0

정말요? 그럴까요? –

+0

사실은 중요하지 않습니다. –

관련 문제