我正在嘗試構建聊天應用程序的iOS 8+,Xcode 7.3上的PubNub的最新試用版。我正在評估PubNub作爲另一個聊天服務器的替代品。PubNub iOS應用程序不會收到推送通知
我已經按照PubNub文檔中關於Apple推送通知的說明進行了操作,但是我的應用在後臺從未收到推送通知。
我已經創建了p12證書並將其導入到我的PubNub密鑰集中。我在我的Xcode常規設置中啓用了推送通知。我已經編寫了PubNub文檔中指定的Swift代碼。我能夠成功發佈和訂閱,但我的應用程序(應用程序:UIApplication,didRegisterForRemoteNotificationsWithDeviceToken deviceToken:NSData)方法向我顯示'零'標記。
@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)
}
和:
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
}
在我的推送通知登記方法:
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
...
})
}
的打印方法,讓我發現了deviceToken爲零。
任何想法我做錯了什麼? 在此先感謝。
正如私人頻道所討論的,獲取一個零標記與PubNub無關。但是,如果您獲得了有效的令牌,並且您註冊了PubNub的頻道,但您仍然無法獲得推送通知,請告訴我們。 –
當你得到零標記時,你正在測試一個設備還是一個SIM卡?你是否正確配置? –
設備令牌由Apple提供(並由PubNub用於推送),但由Apple提供。如果您的配置不正確(或者您正在測試一個SIM卡),那麼您的設備令牌將爲零。請記住,模擬器永遠不會收到設備令牌,因爲它們不是設備。 以下是在PubNub中爲您的應用程序配置推送通知的鏈接https://www.pubnub.com/docs/swift/mobile-gateway#Retrieving_your_mobile_device_IDs(蘋果公司也有很棒的文章) – gurooj