Ich bin auf der neuesten, Testversion von PubNub auf iOS 8 +, Xcode 7.3, versuchen, eine Chat-App zu bauen. Ich bewerte PubNub als Alternative zu einem anderen Chatserver.PubNub iOS App erhält keine Push-Benachrichtigungen
Ich habe die Anweisungen in den PubNub-Dokumenten über Apple Push-Benachrichtigungen befolgt, aber meine App erhält keine Push-Benachrichtigungen, wenn sie im Hintergrund ist.
Ich habe das p12-Zertifikat erstellt und in mein PubNub-Keyset importiert. Ich habe Push-Benachrichtigungen in meinen Xcode-Allgemeinen Einstellungen aktiviert. Ich habe den Swift-Code wie in den PubNub-Dokumenten angegeben geschrieben. Ich bin in der Lage, erfolgreich zu veröffentlichen und zu abonnieren, aber meine Anwendung (Anwendung: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) -Methode zeigt mir ein 'Null' Token.
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, PNObjectEventListener {
var window: UIWindow?
// Instance property
var client: PubNub?
// For demo purposes the initialization is done in the init function so that
// the PubNub client is instantiated before it is used.
override init() {
// Instantiate configuration instance.
let configuration = PNConfiguration(publishKey: "mypubkey", subscribeKey: "mysubkey")
// Instantiate PubNub client.
client = PubNub.clientWithConfiguration(configuration)
super.init()
client?.addListener(self)
}
und:
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
// Override point for customization after application launch.
self.client?.subscribeToChannels(["my_channel"], withPresence: true)
let types: UIUserNotificationType = [.Badge, .Sound, .Alert]
let mySettings: UIUserNotificationSettings = UIUserNotificationSettings(forTypes:types, categories: nil)
UIApplication.sharedApplication().registerUserNotificationSettings(mySettings)
UIApplication.sharedApplication().registerForRemoteNotifications()
return true
}
Und in meinen Push-Benachrichtigung Registrierungsmethoden:
func application(application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: NSData) {
NSUserDefaults.standardUserDefaults().setObject(deviceToken, forKey: "DeviceToken")
NSUserDefaults.standardUserDefaults().synchronize()
print("Device Token=\(NSString(data: deviceToken, encoding:NSUTF8StringEncoding))")
self.client?.addPushNotificationsOnChannels(["my_channel"],
withDevicePushToken: deviceToken,
andCompletion: { (status) -> Void in
...
})
}
Die Druckmethode zeigt mir, dass die deviceToken Null ist.
Irgendeine Idee, was ich falsch mache? Vielen Dank im Voraus.
Wie auf dem privaten Kanal besprochen, bezieht sich das Abrufen eines Null-Tokens nicht auf PubNub. Wenn Sie jedoch ein gültiges Token erhalten und sich mit PubNub für Channels registrieren und Ihre Push-Benachrichtigungen immer noch nicht erhalten, teilen Sie uns dies bitte mit. –
Testen Sie mit einem Gerät oder einer Simulation, wenn Sie den Null-Token erhalten? Sind Sie ordnungsgemäß versorgt? –
Geräte-Token werden von Apple bereitgestellt (und von PubNub für Push verwendet), werden jedoch von Apple bereitgestellt. Wenn Ihre Bereitstellung nicht korrekt ist (oder Sie auf einer SIM-Karte testen), ist Ihr Geräte-Token gleich Null. Denken Sie daran, dass Simulatoren nie einen Geräte-Token erhalten werden, weil sie keine Geräte sind. Hier ist der Link zur Bereitstellung Ihrer App für Push-Benachrichtigungen in PubNub https://www.pubnub.com/docs/swift/mobile-gateway#Retrieving_your_mobile_device_IDs (Apple hat auch tolle Artikel zu diesem Thema) – gurooj