重新安装应用程序时如何在 iOS8 上获取 devicetoken

When application is re-installed How to get devicetoken on iOS8

当我在 iOS8-adhoc-build 上重新安装我们的应用程序时,我无法获得设备令牌。

当我重新安装我们的应用程序时,我在应用程序初始化时调用了以下代码。

func setAPNS(){
    let apnsTypes: UIUserNotificationType = [UIUserNotificationType.Badge,UIUserNotificationType.Sound,UIUserNotificationType.Alert]

    let notiSettings = UIUserNotificationSettings(forTypes:apnsTypes, categories:[])
    UIApplication.sharedApplication().registerUserNotificationSettings(notiSettings)
    UIApplication.sharedApplication().registerForRemoteNotifications()
}

调用以上代码后, 'didFailToRegisterForRemoteNotificationsWithError' 被调用。 所以我无法获得devicetoken。

顺便说一句,当 didFailToRegisterForRemoteNotificationsWithError 被调用时,我尝试测试以下代码

func application(application: UIApplication, didFailToRegisterForRemoteNotificationsWithError error: NSError) {
    //        print("Failed to get token, error: \(error)")
    CLSLogv("Log didFailToRegisterForRemoteNotificationsWithError %@", getVaList([error.description]))
    self.int_unregist += 1
    showLogMessage(NSStringFromClass(self.dynamicType),method:__FUNCTION__, message: error)
    if self.int_unregist <= 1{
        UIApplication.sharedApplication().unregisterForRemoteNotifications()
        self.setAPNS()

    }

}

但我仍然无法获得devicetoken。

这只是 iOS8-adhoc-build 问题。 它从未在调试版本中发生过。

我可以从临时构建中获得以下日志。

Log didFailToRegisterForRemoteNotificationsWithError Error Domain=NSCocoaErrorDomain Code=3000 "Appの有効な“aps-environment”エンタイトルメント文字列が見つかりません" UserInfo=0x174664700 {NSLocalizedDescription=Appの有効な“aps-environment”エンタイトルメント文字列が見つかりません}

我该如何解决?

看起来您没有为生产环境生成推送证书,您只为开发环境生成推送证书(仅用于从 xcode 启动的构建,其他构建类型将使用生产环境)。因此,只需在开发人员中心为生产环境生成推送证书并重新生成您的临时配置文件。