我已经使用FirebaseAuth/FCM等实施了Firebase,并通过Firebase控制台成功发送了通知.
但是,我需要从我自己的应用服务器推送通知.
我想知道下面哪种方式是正确的方法来检索设备的注册ID: -
1)从didRegisterForRemoteNotificationWithDeviceToken中检索注册ID令牌
func application(_ application: UIApplication, didRegisterForRemoteNotificationsWithDeviceToken deviceToken: Data) {
var token = ""
for i in 0..<deviceToken.count {
token += String(format: "%02.2hhx", arguments: [deviceToken[i]])
}
print("Registration succeeded!")
print("Token: ", token)
Callquery(token)
}
Run Code Online (Sandbox Code Playgroud)
2)从firebase检索注册令牌(基于检索当前注册令牌的Firebase文档)
let token = FIRInstanceID.instanceID().token()!
Run Code Online (Sandbox Code Playgroud)
我正在使用第一种方式,即使注册ID相应地存储在我的应用服务器数据库上也没有收到推送通知,我得到了这个CURL会话结果: -
{"multicast_id":6074293608087656831,"success":0,"failure":1,"canonical_ids":0,"results":[{"error":"InvalidRegistration"}]}
Run Code Online (Sandbox Code Playgroud)
我还尝试了第二种方式,并在运行应用程序时遇到致命错误,如下所示: -

如果有人能指出我正确的方式表示赞赏,谢谢!
以前我的应用程序使用touchID用于登录,现在我要实现faceID登录的应用程序,我的应用程序得到这个消息时,应用程序启动本地认证.
当我使用faceID登录时,如何防止显示此消息?
消息内容:" 此应用程序旨在支持Touch ID.尚未针对Face ID进行更新. "
注意:我的info.plist上有NSFaceIDUsageDescription和值
如果有任何建议,我们会感激不尽!
如何在iOS中检索OneSignal用户的唯一玩家ID?我只在OneSignal官方文档中找到了iOS SDK设置.
谢谢,如果有任何建议.
I just created a new iOS Single View App and I try to build and run it. I had received the warning as below:
[Renderer] IconRenderer: HorizontalStretchPadding (18.000000, 18.000000) is larger than the image size (34.000000, 54.000000). Image will now use the center column of pixels to stretch.
Run Code Online (Sandbox Code Playgroud)
This warning keeps showing multiple times.
无法关闭模态视图控制器并返回到根视图控制器。动画确实显示了,但仍然弹出当前视图控制器。
我正在开发应用程序而不使用故事板,我想关闭当前的模式视图控制器并返回到根视图控制器。
有什么正确的方法可以做到这一点吗?
我的根控制器是导航控制器,而我的模式视图控制器是UIViewController。这是不工作的根本原因吗?
模态视图控制器(PlayerViewController)
func handleBack() {
self.view.window?.rootViewController?.dismiss(animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
HomeController 中的 FeedCell.swift (FeedCell.swift)
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
let playerViewController = PlayerViewController()
playerViewController.modalPresentationStyle = .overCurrentContext
self.window?.rootViewController?.present(playerViewController, animated: true, completion: nil)
}
Run Code Online (Sandbox Code Playgroud)
应用程序代理
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
window = UIWindow(frame: UIScreen.main.bounds)
window?.makeKeyAndVisible()
let layout = UICollectionViewFlowLayout()
window?.rootViewController = UINavigationController(rootViewController: HomeController(collectionViewLayout: layout))
UINavigationBar.appearance().barTintColor = UIColor.rgb(red: 230, green: 32, blue: 31)
// get rid …Run Code Online (Sandbox Code Playgroud)