首页 > 解决方案 > OneSignal - Swift - 接收不同语言的推送通知

问题描述

我正在使用 OneSignal 的 sdk。假设,我有以下用例:

用户 A 用德语使用我的应用程序。他在应用程序内触发一个动作,例如对用户 B 的图像点赞。用户 B 收到关于点赞的推送通知。但是用户 B 使用英语的应用程序。我怎样才能做到这一点?

我的意思是,我可以使用特定语言发送通知消息,但如果用户 B 决定将移动设备的语言更改为土耳其语,那么我必须是 flexibel。

有什么办法可以访问目标设备上的传入推送通知?

目前,我从源设备发送通知的代码如下所示:

 public func notifyAboutSubscription(userObject:User, receiverArray:[String]) {
       var receiverArray = removeChallengeCreatorTokenFromArray(receiverArray: receiverArray)
        notificationTypeService.clearReceiverListForNotificationType(completionHandler: { (clearedReceiverArray) in
            receiverArray = clearedReceiverArray

            let source = self.determineUserType(userObject: userObject)
            // actual message is source + FOLLOW_MESSAGE
            OneSignal.postNotification(["contents": ["en": source
                + FOLLOW_MESSAGE], "include_player_ids": receiverArray])
        }, receiverList: receiverArray, notificationType: NotificationType.follow)
    }

标签: swiftxcodepush-notificationonesignalnslocalizedstring

解决方案


好吧。我刚刚找到了解决方案。这是上面修改后的代码:

public func notifyAboutSubscription(userObject:User, receiverArray:[String]) {
    var receiverArray = removeChallengeCreatorTokenFromArray(receiverArray: receiverArray)


    notificationTypeService.clearReceiverListForNotificationType(completionHandler: { (clearedReceiverArray) in
        receiverArray = clearedReceiverArray

        let source = self.determineUserType(userObject: userObject)
        OneSignal.postNotification(["contents": ["en": source +
            " started following you", "de": source + " folgt dir jetzt", "tr": source + " seni takip ediyor"], "include_player_ids": receiverArray])
    }, receiverList: receiverArray, notificationType: NotificationType.follow)
}

您基本上为每种语言添加相应的键。根据设备语言,会显示正确的消息。


推荐阅读