2016-07-20 17 views
1

のiOSのVoIPプッシュ -

func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!) 

が呼び出されていない機能の登録に失敗しました。 は、ここに私のコードです:

import UIKit 
import PushKit 
import Foundation 

@UIApplicationMain 
class AppDelegate: UIResponder, UIApplicationDelegate, PKPushRegistryDelegate { 

var window: UIWindow? 

//Tried also to make it local 
var voipRegistry:PKPushRegistry? 

func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool { 
    // Override point for customization after application launch. 
    self.registerVoipNotifications() 
    return true 
} 
func registerVoipNotifications() { 
    let mainQueue = dispatch_get_main_queue() 
    // Create a push registry object 
    voipRegistry = PKPushRegistry(queue: mainQueue) 
    // Set the registry's delegate to self 
    voipRegistry!.delegate = self 
    // Set the push type to VoIP 
    voipRegistry!.desiredPushTypes = [PKPushTypeVoIP] 
} 
func pushRegistry(registry: PKPushRegistry!, didUpdatePushCredentials credentials: PKPushCredentials!, forType type: String!) { 
    //1. Create the alert controller. 
    let alert = UIAlertController(title: "VoIPPushTest", message: "Token", preferredStyle: .Alert) 

    //2. Add the text field. You can configure it however you need. 
    alert.addTextFieldWithConfigurationHandler({ (textField) -> Void in 
     textField.text = "got cred" 
    }) 

    //print out the VoIP token. We will use this to test the nofications. 
    NSLog("voip token: \(credentials.token)") 
    let tokenChars = UnsafePointer<CChar>(credentials.token.bytes) 
    var tokenString = "" 

    for i in 0..<credentials.token.length { 
     tokenString += String(format: "%02.2hhx", arguments: [tokenChars[i]]) 
    } 
    print("Device Token:", tokenString) 

} 
//Other standard app delegate functions below without changes 
私はそれがとても

  1. 作成した新しいアプリケーションID、プロファイルおよび証明書

  2. 追加のバックグラウンド機能アプリ

    への証明書の問題であり得ることを読ん

  3. コードに署名する:コード署名のアイデンティティ - iPhone配布、プロビジョニングプロファイルVoIPPushTestProfile

私はコードをアーカイブし、アドホックデプロイメントのためにエクスポートしています。 私は間違って何をしていますか?

答えて

3

あなたのコードによれば、プッシュ通知を受け取る権限をユーザーに求めることはありません。これを行うにはUIApplication.registerUserNotificationSettingsに電話する必要があります。

+0

ありがとうございました!他の人がコードからデバッグモードでも動作することを知る助けになるかもしれません - 毎回アーカイブする必要はありません。 – nmnir

+0

パーフェクト、あなたはまた、配布証明書で "実行可能ファイルが起動するのを待つ"ことによって、キル状態でアプリをデバッグすることができます。 – Hasya

関連する問題