我在 iOS 中有一个即时消息应用程序。我想使用推送通知让用户知道他是否在应用程序最小化时收到了消息。最初我已经实现了应用程序,当应用程序最小化时,应用程序通知我的服务器,服务器又联系 APNS 以通知收到消息。但是应用程序通知服务器有延迟。因此,如果用户最小化应用程序,同时向他发送消息,他将不会收到通知,因为我的服务器仍在向应用程序而不是 APNS 发送消息。
我想知道如何在聊天应用程序中克服这种情况。他们是否将所有聊天消息发送到 APNS,而不管用户是否已最小化应用程序。如果我将所有消息都发送到 APNS,这会是一个好的设计吗?
我注册了远程通知并且它工作得很好。现在我正在实施无提示通知。为此,我启用了后台远程通知和应用程序从网络下载内容。
并发送,
{"aps": {"content-available": 1}}
Run Code Online (Sandbox Code Playgroud)
它调用以下回调方法,但仅当应用程序处于后台时:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult result))completionHandler
Run Code Online (Sandbox Code Playgroud)
在这种方法中,我在从服务器下载一些数据后触发本地通知。但是当应用程序不在后台时,此方法根本不会调用。
在关于Push Notification 的Apple 文档中,他们说:
“当无提示通知到达时,iOS 会在后台唤醒您的应用程序,以便您可以从服务器获取新数据或进行后台信息处理。”
理想情况下,静默远程通知应该在后台唤醒我的应用程序,并且本地通知应该可以工作。
有什么想法吗?
我的应用程序已连接到远程推送通知服务。在服务器端,他们希望为设备保留一个唯一的 ID,即使应用程序已删除并重新安装,它也不应该改变。我们可以获取设备 UDID 并发送到服务器吗?如果我这样做了,Apple 会从商店拒绝我的应用程序吗?而且我认为这是即使应用程序删除也能永久保留在服务器端的最佳 ID。
我需要你的建议。请帮我。谢谢
我正在使用此代码获取设备令牌它在swift 3中工作但不在swift 4中工作请帮我解决它.
if #available(iOS 10.0, *) {
let center = UNUserNotificationCenter.current()
center.requestAuthorization(options:[.badge, .alert, .sound]) { (granted, error) in
}
}
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
let deviceTokenString = deviceToken.reduce("", {$0 + String(format: "%02X", $1)})
print(deviceTokenString)
}
我读了几篇文章,其中很好地解释了 iOS 中的推送通知是如何工作的。最近我在SNS 上遇到了FCM和FCM。我们在后端已经有许多模块使用 AWS SNS 来推送通知。因此,在这种情况下,我们不使用 FCM 替换 AWS SNS 而是让 SNS 命中 FCM 端点,然后 FCM 可以联系 APNS 将通知推送到应用程序才有意义。
是否有意义?
什么是理想的场景?(由于我们使用的是 FCM,我们是否应该根本不使用 SNS,因为两者都是推送通知服务? - 我们不应该使用这两个中的任何一个而不是这两个)
任何人都可以用基本图表来解释 - 添加 FCM 后图片将如何变化?
首先,我们对 FCM 提供的分析感兴趣。
apple-push-notifications ios firebase swift firebase-cloud-messaging
我目前正在尝试通过 firebase 向 iOS 发送通知,其中包含我想保存到变量的数据。
我的服务器正在推送我的手机收到的通知,该通知包含topic_name, message_body, data_message, sound. 所有这些都有效,尽管我对如何访问数据感到困惑。本质上,我想将发送的数据保存到一个变量中。
我该怎么做呢?
我将推送扩展服务(目标)添加到我的项目 iOS 10 Rich Notifications Integration
它无法连接到进程(并且它不起作用 - 无法更改有效负载)。Xcode 仅通过“调试 - 通过 PID 或名称附加到进程”连接到进程一次。现在,它等待“等待附加”状态。
Xcode 9.4.1 运行设备 iPhone 7 Plus 11.4
我刚刚阅读了很多关于推送通知服务器、自托管服务器以及云的文章。我对某一方面感到非常困惑。
我需要为使用同一应用程序的超过一百万台设备推送我的 Android/iOS 应用程序通知。现在没有这种规模的免费服务,付费服务会导致太多的月费,所以我考虑使用开源解决方案运行我自己的服务器。我已经检查了 Many 但parse似乎是最合适的。但他们说它使用 FCM,我从谷歌定价知道它只对有限数量的注册设备免费。我认为托管我自己的推送服务器可以免除这些费用;但似乎不是;那有什么好处呢?直接使用FCM不是更好吗?
push-notification apple-push-notifications android-notifications server firebase-cloud-messaging
移动推送通知使用什么协议?
以安卓为例。首先,从第三方服务器向 Firebase 服务器发出 HTTP 请求。接下来是问题。FIrebase 服务器如何从众多手机中选择所需的手机并发送推送通知?
当然,我知道我可以发送推送通知而不必担心。但是,我对兴趣很好奇。
在 TCP/IP 上,通信需要 IP 地址和 MAC 地址,但是如何向手机发送推送通知?
用于学习的链接
谢谢。
android push-notification apple-push-notifications ios firebase
当我存档我的应用程序时,我从苹果收到以下错误。我该如何解决?
ITMS-90078:缺少推送通知权利 - 您的应用程序似乎注册了 Apple 推送通知服务,但应用程序签名的权利不包括“aps-environment”权利。如果您的应用程序使用 Apple 推送通知服务,请确保您的 App ID 已在配置门户中启用推送通知,并在使用包含“aps-environment”权利的分发配置文件对您的应用程序进行签名后重新提交。Xcode 不会在构建时自动从配置文件中复制 aps-environment 权利。这种行为是故意的。要使用此权利,请在项目编辑器的“功能”窗格中启用推送通知,或手动将权利添加到您的权利文件中。有关更多信息,请参阅https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/RemoteNotificationsPG/HandlingRemoteNotifications.html#//apple_ref/doc/uid/TP40008194-CH6-SW1。
更正问题后,您可以将新的二进制文件上传到 App Store Connect。