Liferay-Push 1.1.0

Liferay-Push 1.1.0

测试已测试
语言语言 SwiftSwift
许可证 NOASSERTION
发布最后发布2020年10月
SPM支持SPM

由Bruno Farache、Allan Melo、Javier Gamarra、victorg1991维护,链接如下:Bruno FaracheAllan MeloJavier Gamarravictorg1991



  • 作者:
  • Bruno Farache

Liferay Mobile SDK logo

Liferay Push for iOS

Build Status

设置

将库Pod添加到您的应用程序的Podfile中

target '<your-application>' do
  use_frameworks!
  
  pod 'Liferay-Push'  
  
  // Other pods
end

示例应用程序

与库一起,在这个仓库中您有一个示例,您可以在这里看到一个如何使用此库的例子。

用法

配置服务器以发送推送通知

首先,您需要配置您的服务器,使其能够发送推送通知。

生成iOS APN证书

  • 前往您的 Apple开发者账号

  • 为您应用创建一个新的证书(输入应用名称、Bundle ID)并选择推送通知。为此,您需要使用Keychain应用程序创建一个证书请求。

  • 下载生成的 .cert 文件并将其安装到 Keychain 中。

  • 使用相同的App将证书导出为 .p12 文件。

在服务器上安装证书

一旦您有了 .p12 文件,下一步将是将此证书放入服务器。首先,您需要将证书保存到服务器所在计算机上。

7.1

完成此操作后,使用浏览器登录到服务器并转到控制面板 -> 配置 -> 系统设置 -> 通知并选择Apple系统范围。

您将看到类似的屏幕

7.0

完成此操作后,使用浏览器登录到服务器并转到配置 -> 系统设置,查找Apple Push Notification发送者

您将看到类似的屏幕

  • 在第一个字段中,您必须添加您在导出证书时设置的密码。
  • 在第二个字段中,您必须添加证书所在的路径。
  • 最后一个字段是一个复选框,当您使用开发证书时必须启用它。

配置应用程序以接收推送通知

启用应用中的推送通知

为了让您应用能够接收推送通知,您需要启用以下功能:

  • 后台模式 -> 远程通知。
  • 推送通知。

注册设备令牌

为了接收推送通知,您的应用必须首先在门户上注册自身。在门户端,每个设备都与一个用户相关联。每个用户可以有多个已注册的设备。设备由设备令牌字符串表示。

注册设备

为了接收推送通知,您的应用必须首先在门户上注册自身。在门户端,每个设备都与一个用户相关联。每个用户可以有多个已注册的设备。设备由设备令牌字符串表示。

阅读苹果官方文档以了解如何获取设备令牌。这篇教程也十分有用,可以帮助您了解苹果推送通知的工作原理。

一旦您拥有设备令牌,您可以通过调用

#import "Push.h"

LRSession *session = [[LRSession alloc] initWithServer:@"https://:8080" username:@"[email protected]" password:@"test"];

[[Push withSession:session] registerTokenData:deviceToken];
import LRPush

LRPush.withSession(session)
	.registerDeviceTokenData(deviceToken)

现在每当门户需要向用户[email protected]发送推送通知时,它会查找所有已注册的设备(包括刚刚注册的设备),并为找到的每个deviceToken发送推送通知。

由于所有操作都是异步的,您可以为检查注册是否成功或在服务器端发生错误设置回调函数

[[[[Push withSession:self.session]
	onSuccess:^(NSDictionary *device) {
		NSLog(@"Device was registered!");
	}]
	onFailure:^(NSError *e) {
		NSLog(@"Some error occurred!");
	}]
	registerTokenData:deviceToken];
import LRPush

LRPush.withSession(session)
	.withPortalVersion(70)
	.onSuccess {
		print("Success: \(String(describing: $0))")
	}
	.onFailure {
		print("Error \(String(describing: $0))")
	}
	.registerDeviceTokenData(deviceToken)

onSuccessonFailure块是可选的,但实现两者是良好的实践。通过这样做,您的应用可以持久化设备令牌或告知用户发生了错误。

一旦您的设备注册成功,您的应用必须能够监听通知。苹果开发者文档展示了如何在您的应用中实现这一点。

发送推送通知

从Liferay Portal发送推送通知有多种方法。有关详细信息,请参阅Liferay Push文档。或者,您也可以从iOS应用程序发送推送通知。只需确保用户在门户中拥有发送推送通知的正确权限即可。

NSDictionary notification = @{
    @"body": @"hello!"
};

[[Push withSession:session] sendToUserId:123 notification:notification];
let notification: [String: AnyObject] = [
	"body": "hello!" as AnyObject
]

Push.withSession(session).sendToUserId(123, notification:notification)

在此代码中,推送通知是通过sendToUserId指定的用户发送的。在接收到通知后,门户查找所有用户注册的设备(包括Android和iOS设备),并将notification作为推送通知的消息体发送。

注销设备

如果您想停止在设备上接收推送通知,可以使用以下代码从门户注销它。

[[Push withSession:session] unregisterToken:deviceToken];
Push.withSession(session).unregisterToken(deviceToken)

用户只能注销他们拥有的设备。

测试推送通知

Liferay有一个用于执行测试发送推送通知的小部件。在登录到门户后,请转到配置 -> 推送通知。您将看到如下屏幕:

如果您想要发送推送通知以进行测试,必须在消息文本字段中输入推送通知的内容。请注意,它必须是一个正确的json,例如:{"body": "推送通知内容"}

重要说明

如果想要使用此方法进行测试,您必须知道如果您想正确地在iOS设备上接收推送通知,则需要某些密钥。传递给推送小部件的消息不是发送到APN的最终消息。Liferay推送小部件旨在平台无关性,因此最终消息遵循以下约束:

  • 您在json中放置的所有值,键名不是保留的,都将发送到最终消息中的payload键下。例如:{"myKey": "myValue"}将被转换为{"apn": {}, "payload": {"myKey": "myValue"}}

  • body键转换为alert并放在apn键中。例如:{"body": "我的推送内容"}将转换为{"apn": {"alert": "我的推送内容"}}。(如果您想显示视觉通知,添加此键是必需的

  • 带真值的silent键将转换为content-available并放在apn键中。例如:{"silent": true}将转换为{"apn": {"content-available": 1}}。(如果您想发送静默通知,添加此键是必需的

  • sound键将放在apn键中。例如:{"sound": "default"}将转换为{"apn": {"sound": "default"}}

  • 徽章键将位于APN键内部。例如{"badge": 1}将转换为{"apn": {"badge": 1}}。(如果您想发送静默通知,则新增此键是必须的