私は最新のiOS 8+、Xcode 7.3のPubNubの試用版で、チャットアプリを構築しようとしています。私は別のチャットサーバの代わりにPubNubを評価しています。PubNub iOSアプリはプッシュ通知を受け取りません
Appleプッシュ通知に関するPubNubドキュメントの指示に従ってきましたが、私のアプリはバックグラウンドでプッシュ通知を受け取ることはありません。
私はp12証明書を作成し、それを私のPubNubキーセットにインポートしました。 Xcodeの一般設定でプッシュ通知を有効にしました。私はSwiftコードをPubNubの文書で指定されているように記述しました。パブリッシュとサブスクライブは正常にできましたが、アプリケーション(アプリケーション:UIApplication、didRegisterForRemoteNotificationsWithDeviceToken deviceToken:NSData)メソッドは私に 'nil'トークンを示しています。
@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がnilであることを私に示しています。
私が間違っていることを知っていますか? ありがとうございます。
プライベートチャネルで説明したように、nilトークンを取得することはPubNubとは関係ありません。しかし、有効なトークンを取得してPubNubでチャンネルを登録してもプッシュ通知が表示されない場合は、私たちにお知らせください。 –
nilトークンを取得したら、デバイスまたはsimでテストしていますか?あなたは適切に準備されていますか? –
デバイストークンはAppleによって提供され(プッシュ用にPubNubによって使用される)、Appleによって提供されます。あなたのプロビジョニングが間違っている場合(またはsimでテストしている場合)、デバイストークンはゼロになります。シミュレータはデバイスではないため、デバイストークンを受け取ることはありません。 PubNub https://www.pubnub.com/docs/swift/mobile-gateway#Retrieving_your_mobile_device_IDsにプッシュ通知のためのアプリをプロビジョニングするためのリンクです(Appleはこれに関する素晴らしい記事もあります) – gurooj