1

我陷入了一个非常烦人的问题。

我正在使用 javaPNS 并遵循互联网上的众多指南之一。

这里:https ://code.google.com/p/javapns/wiki/PushNotificationAdvanced

 /* Push your custom payload */ 
    List<PushedNotification> notifications = Push.payload(payload, keystore, password, production, devices);

你在上面看到这个的地方。它说 Push.payload() 返回一个带有 PushedNotificaion 的列表。好吧,它不在我的代码中。

object Push {

def devPush(pushAlertMessage: String, badgeNumber: Int, devices: Seq[String]): List[PushedNotification] = {

//Retrieve the .p12 certification file
val keystoreFile = getClass.getResourceAsStream("keystorefile.p12")

//Create payload
val payload = PushNotificationPayload.complex()
payload.addBadge(badgeNumber)
payload.addAlert(pushAlertMessage)
payload.addSound("default")

//
val notifications:List[PushedNotification] = javapns.Push.payload(payload, keystoreFile, keystorePassword, false, devices)

for(notification <- javapns.Push.alert(pushAlertMessage, keystoreFile, keystorePassword, false, devices).getFailedNotifications){
    /* Add code here to remove invalid tokens from database */
}

notifications
}
}

当我尝试使用 Push.payload 在我的 val 通知中添加一个列表时,它说:

“PushedNotifications 类型的表达不符合预期类型 List[PushedNotification]”

我很累很困惑,也不确定其余的代码。将不胜感激任何帮助,请。如果我错了,请更正我的代码。

4

1 回答 1

1

您缺少java.util.List返回的和所需的 scala的隐式转换List。尝试添加以下导入:

import scala.collection.JavaConversions._

并调整这一行:

val notifications:List[PushedNotification] = javapns.Push.payload(payload, keystoreFile, keystorePassword, false, devices)

对此:

val notifications:List[PushedNotification] = javapns.Push.payload(payload, keystoreFile, keystorePassword, false, devices).toList

此外,看起来您将在这里向每个设备推送两次,作为对设备的调用payloadalert推送通知。如果您真的只想发送您构建的复杂有效负载,那么您的代码可能应该是:

val results = javapns.Push.payload(payload, keystoreFile, keystorePassword, false, devices)

for(notification <- result.getFailedNotifications.toList){
    /* Add code here to remove invalid tokens from database */
}
于 2013-07-10T14:08:45.413 回答