小编Awa*_*yaz的帖子

如何在Swift 4中正确实现MessageKit?| 委托函数没有被调用

我试图在我的iOS swift应用程序中为聊天功能实现MessageKit(JSQMessagesViewController的替换)。我遵循了raywenderlich教程。我使用Pods进行安装,并逐步遵循了本教程。我的消息正在显示。根据本教程,为了隐藏用户头像,我将viewController设置为messagesLayoutDelegate和的委托messagesDisplayDelegate。

//Inside view did load, i set the delegates, along with data source
messagesCollectionView.messagesDataSource = self
messagesCollectionView.messagesLayoutDelegate = self
messagesCollectionView.messagesDisplayDelegate = self
Run Code Online (Sandbox Code Playgroud)

但是,MessagesLayoutDelegate没有调用的委托函数。

我想隐藏用户头像,所以我在viewController中采用了协议

extension ChatLogVC_MessageKit: MessagesLayoutDelegate {

 func avatarSize(for message: MessageType, at indexPath: IndexPath,
              in messagesCollectionView: MessagesCollectionView) -> CGSize {

    //return zero size for hiding avatar, but this function is not being called. 

  return .zero
 }

 func footerViewSize(for message: MessageType, at indexPath: IndexPath,
                      in messagesCollectionView: MessagesCollectionView) …
Run Code Online (Sandbox Code Playgroud)

ios swift messagekit

9
推荐指数
1
解决办法
6136
查看次数

无效的捆绑包 - Info.plist 应使用包含单个平台的数组指定 CFBundleSupportedPlatforms

我正在尝试将档案上传到应用商店连接。存档上传成功。当我去应用商店连接并在活动部分看到它时。它说“此版本无效”,带有红色感叹号。我检查了我的开发者电子邮件并收到了这条消息

`我们发现您的应用程序最近交付的一个或多个问题,“应用程序名称”。请更正以下问题,然后重新上传。

无效的捆绑包 - Info.plist 应使用包含单个平台的数组指定 CFBundleSupportedPlatforms


我搜索了解决方案,发现我的 info.plist 应该包含一个键“CFBundleSupportedPlatforms”,其中一个数组值只有一个条目“iPhoneOS”。

添加了所需的键值

信息表

所以我在 info.plist 中添加了所需的键和值。我再次制作存档并提交。但我再次面临同样的问题。红色感叹号出现在“活动”部分,当我点击这个标记时,它说这个版本无效

应用商店连接

我寻找解决方案。我找到了涉及包含模拟器平台的嵌套包的答案。但这些与我的情况无关

谢谢你帮助我。

ios app-store-connect

5
推荐指数
1
解决办法
1981
查看次数

为什么通知服务扩展在 iOS 14 上没有启动?

我集成了UNNotificationServiceExtension,它允许我在推送通知呈现给用户之前更改其标题。

\n

我已遵循苹果开发人员文档中提到的指南,并浏览了 SO 的相关问题,但似乎没有任何效果。

\n
\n

按照指示,我已遵循这些准则

\n
    \n
  • 在推送通知有效负载中包含“mutable-content”:1
  • \n
  • 应正确设置扩展程序的部署目标(应与主应用程序目标匹配)
  • \n
  • 有效负载必须包含带有标题、副标题或正文信息的警报字典
  • \n
  • 推送通知有效负载中的“aps”字典必须包含带有字符串值的键“category”。
  • \n
\n
\n

问题

\n

当收到推送通知时,有时不会触发我的通知服务扩展,主要是当我删除并安装应用程序的新副本时。在这种情况下,断点也不会被触发。系统似乎忘记触发服务扩展。我选择了正确的扩展方案,而不是主要的应用程序目标。我的通知标题没有按照我的逻辑更新。

\n

注意:这是在 iOS 14 上发生的。在 iOS 12 上,它工作正常。这是 iOS 的错误吗?

\n

这些线程中已经对此进行了讨论。

\n

https://developer.apple.com/forums/thread/67202 \n https://developer.apple.com/forums/thread/125987

\n

任何帮助将不胜感激。\n谢谢

\n

示例代码

\n

我做了一个示例项目来演示这个问题。您可以从Github Repo下载它

\n

相关 WWDC 视频

\n

最佳实践和用户通知中的新增内容\xe2\x80\x99

\n

push-notification apple-push-notifications ios swift

5
推荐指数
1
解决办法
6472
查看次数

区别:tableView.cellForRow和dataSource.cellForRowAtIndexPath

目前我正在开发一个项目,启动该项目的开发人员曾经使用过访问单元格

dataSource.cellForRowAtIndexPath(indexPath)
Run Code Online (Sandbox Code Playgroud)

但我习惯用来访问细胞

cellForRow(at: indexPath)
Run Code Online (Sandbox Code Playgroud)

有谁知道差异,哪个更好用?我问的原因是dataSource.cellForRowAtIndexPath(indexPath)导致我们崩溃的原因.

***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'尝试为同一索引路径出列多个单元格,这是不允许的.如果您确实需要出现比表视图请求更多的单元格,请使用-dequeueReusableCellWithIdentifier:方法(不带索引路径).单元标识符:CheckTableViewCell,索引路径:{length = 2,path = 1 - 0}'

uikit tableview ios swift

2
推荐指数
1
解决办法
253
查看次数

差异BW Facebook登录和FBSDKLoginKit Pod和哪一个使用?

我试图在我的iOS应用程序中集成facebook登录.我正在为此目的阅读官方文档.

在这个入门链接.文档说要使用以下pod

pod 'FacebookCore'
pod 'FacebookLogin'
pod 'FacebookShare'
Run Code Online (Sandbox Code Playgroud)

所以我明白我必须使用pod FacebookLogin,就是这样.

但

在这个iOS登录文档页面上,文档说要使用

 pod 'FBSDKLoginKit'
Run Code Online (Sandbox Code Playgroud)
  1. 我对使用哪一个感到困惑.
  2. 这两者有什么区别?

注意:我只想在我的应用程序中执行facebook登录而不是其他任何内容.

facebook ios facebook-ios-sdk swift

2
推荐指数
3
解决办法
1721
查看次数