2.3.0 版本更新内容是什么?
次要更新
地理位置周期
现在您可以为通知显示定义一个周期(通过 E-goi 的平台)。
EgoiPushLibrary
需求
要使用此库,您必须在您的应用中配置好Firebase。 不知道如何操作?阅读这篇文章。
注意:此库的主要目的是处理推送通知,因此您只需安装pod 'Firebase/Messaging'即可使其工作。
您必须在Firebase应用中插入APNs密钥。 更多信息请查阅此处。
您必须拥有一个E-goi账户,并且已经配置了一个推送应用程序。
您必须在Info.plist中插入以下属性
- 必需的后台模式
- 应用注册位置更新
- 应用在后台处理数据
- 应用在接收到推送通知时下载内容
- 隐私 - 位置始终开启或使用时描述
- 隐私 - 使用时位置描述
安装
EgoiPushLibrary通过CocoaPods提供。安装它,只需将以下行添加到Podfile中
pod 'EgoiPushLibrary'
安装后,您可以用以下指令在AppDelegate.swift中初始化库
注意:您的AppDelegate应该扩展我们的EgoiAppDelegate而不是从 UIResponder 或 UIApplicationDelegate 延伸。如果您使用的是SceneDelegate,您还必须扩展EgoiSceneDelegate。这是我们处理逻辑的方式,您不需要像处理接收到的远程通知一样,这还允许我们在您的应用中显示警告。
注意:如果您想要处理通知,应该扩展我们的 EgoiAppDelegateViewOnly,这样我们就不会控制 UNUserNotificationCenter。
import EgoiPushLibrary
class AppDelegate: EgoiAppDelegate {
func application(
_ application: UIApplication,
didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?
) -> Bool {
FirebaseApp.configure()
Messaging.messaging().delegate = self
EgoiPushLibrary.shared.config(
appId: "abc",
apiKey: "abc",
dialogCallBack: { message in
print(message)
},
deepLinkCallBack: { message in
print(message)
}
)
return true
}
}
在 AppDelegate.swift 中,您可以使用以下代码将 Firebase token 发送到库
extension AppDelegate : MessagingDelegate {
public func messaging(
_ messaging: Messaging,
didReceiveRegistrationToken fcmToken: String?
) {
guard let token = fcmToken else {
return
}
EgoiPushLibrary.shared.addFCMToken(token: token)
}
}
NotificationServiceExtension
要在通知中显示您 E-goi 营销活动中定义的图像和操作,您需要创建一个 NotificationServiceExtension 来处理在操作系统在设备上显示之前的逻辑。为此,您可以参考此链接。生成文件后,您可以复制并粘贴我们的 NotificationService(请确保类名是您生成的,而不是我们的文件中的名称)的内容。
在您的 Podfile 中,您需要将 'Firebase/Messaging' 添加为 NotificationServiceExtension 的依赖项。
参考资料
配置
EgoiPushLibrary.shared.config()
负责初始化库。此方法的调用是必需的。
属性 | 类型 | 说明 | 必需 | 默认 |
---|---|---|---|---|
appId | 字符串 | E-goi账户上创建的应用的ID。 | true | --- |
apiKey | 字符串 | 您的E-goi账户的API密钥。 | true | --- |
geoEnabled | 布尔 | 启用或禁用位置相关功能的标志。 | false | true |
dialogCallBack | EGoiMessage -> Void | 在对话框的位置调用的回调。 | false | nil |
deepLinkCallBack | EGoiMessage -> Void | 当消息的链接是deeplink时调用的回调 | false | nil |
EgoiPushLibrary.shared.addFCMToken()
每次生成新的Firebase令牌时都应调用此方法。令牌将保存到库中,如果用户已经在您的E-goi列表中注册,则自动更新令牌。
属性 | 类型 | 说明 | 必需 | 默认 |
---|---|---|---|---|
token | 字符串 | Firebase生成的令牌。 | true | --- |
EgoiPushLibrary.shared.processNotification()
此方法处理接收到的远程通知。如果远程通知是位置推送,则在用户进入区域时触发本地通知的地理围栏。如果是正常通知,则在用户打开通知横幅时显示通知并打开E-goi定义的操作对话框。
此方法已在实现于 EgoiAppDelegate.swift 中的 didReceiveRemoteNotification 内部调用,但您也可以在自己的通知处理中调用它。
属性 | 类型 | 说明 | 必需 | 默认 |
---|---|---|---|---|
userInfo | [AnyHashable : Any] | 通知的数据。 | true | --- |
callback | @escaping (UIBackgroundFetchResult) -> Void | 处理完通知后将被调用的回调。 | true | --- |
EgoiPushLibrary.shared.handleNotificationInteraction()
此方法处理用户与通知的交互。如果用户点击通知,则打开应用并启动一个包含定义好的操作的对话框。如果用户点击“查看”操作,则使用默认浏览器打开通知中定义的URL或尝试调用SDK配置中定义的deeplinkCallback。它还会根据用户的交互将事件“打开”或“已取消”发送给E-goi。
如果您是处理通知的方,应在UNUserNotificationCenterDelegate的didReceive方法中调用此方法。
属性 | 类型 | 说明 | 必需 | 默认 |
---|---|---|---|---|
响应 | UNNotificationResponse | 用户与通知的交互 | true | --- |
userNotificationCenter | UNUserNotificationCenter | 当前的UNUserNotificationCenter实例。它用于管理由E-goi创建的通知类别。 | false | nil |
completionHandler | () -> Void | 处理交互后调用的回调。 | false | nil |
操作
EgoiPushLibrary.shared.requestForegroundLocationAccess()
请求用户权限在应用在前台(在屏幕上显示)时访问位置。
EgoiPushLibrary.shared.requestBackgroundLocationAccess()
请求用户权限在应用处于后台(最小化或关闭)时访问位置。
EgoiPushLibrary.shared.requestNotificationsPermission()
请求用户允许发送推送通知。
EgoiPushLibrary.shared.sendToken()
在E-goi列表中注册Firebase令牌。您只需调用此方法一次,之后库会自动使用新令牌更新E-goi列表中的联系人。
属性 | 类型 | 说明 | 必需 | 默认 |
---|---|---|---|---|
字段 | 字符串 | 用于注册令牌的列表上的字段。 | false | nil |
值 | 字符串 | 用于在上述字段中注册的值。 | false | nil |
callback | @escaping (_ success: Bool, _ message: String?) -> Void | 当E-goi服务器完成请求处理时将调用的回调 | true | --- |
EgoiPushLibrary.shared.registerEvent()
在E-goi中注册与通知相关的事件。
属性 | 类型 | 说明 | 必需 | 默认 |
---|---|---|---|---|
事件 | 字符串 | 要在E-goi中注册的事件。 | true | --- |
消息 | EGoiMessage | 与事件相关联的消息 | true | --- |
作者
E-goi, [email protected]
许可
EgoiPushLibrary 按照MIT许可可用。有关更多信息,请参阅LICENSE文件。