Google 用户消息传递平台和 Objective C 到 Swift

2023-12-23

因此,我已经尝试了一个多星期来让谷歌用户消息传递平台正常工作(这个问题将在接下来的几周/几个月内到处出现)。 问题是启动guid是用obj C写的,我看不懂! 我已经设法将 obj C 代码插入到我的 swift 项目中,它可以运行,但在尝试呈现表单时会引发异常。 我认为这是因为它是一个 .m 文件,并且它试图从 self 呈现表单,并且“self”不是视图控制器,那么它会崩溃吗? obj C 代码(如谷歌网站推荐)在这里:

#import "CustomObject.h"

@implementation CustomObject 

- (void) someMethod {
// Create a UMPRequestParameters object.
UMPRequestParameters *parameters = [[UMPRequestParameters alloc] init];
// Set tag for under age of consent. Here NO means users are not under age.
parameters.tagForUnderAgeOfConsent = NO;

// Request an update to the consent information.
[UMPConsentInformation.sharedInstance
    requestConsentInfoUpdateWithParameters:parameters
                         completionHandler:^(NSError *_Nullable error) {
                           if (error) {
                             // Handle the error.
                           } else {
                             // The consent information state was updated.
                             // You are now ready to check if a form is
                             // available.
                            UMPFormStatus formStatus = UMPConsentInformation.sharedInstance.formStatus;
                            if (formStatus == UMPFormStatusAvailable) {
                            [self loadForm];
                            }
                           }
                         }];
}
    -(void) loadForm {
        [UMPConsentForm loadWithCompletionHandler:^(UMPConsentForm *form, NSError *loadError) {
               if (loadError) {
                 // Handle the error
               } else {
                   // Present the form. You can also hold on to the reference to present
                   // later.
                   if (UMPConsentInformation.sharedInstance.consentStatus ==
                       UMPConsentStatusRequired) {
                     [form
                      presentFromViewController: self
                                 completionHandler:^(NSError *_Nullable dismissError) {
                                   if (UMPConsentInformation.sharedInstance.consentStatus ==
                                       UMPConsentStatusObtained) {
                                     // App can start requesting ads.
                                   }

                                 }];
                   } else {
                     // Keep the form available for changes to user consent.
                   }
               }
             }];
    }

@end

我在这里拔掉我的头发。 我真正需要的是 A。将此代码转换为 swift 以便我可以理解它或 b.谁能建议我需要对 presentfromviewcontroller 函数做什么以阻止它抛出异常并呈现表单?

谢谢.....


好吧,既然我的问题没有得到回应,我终于设法通过将 obj c 翻译成 swift 来让它工作。 我认为将其发布在这里会很有帮助,以防其他人遇到同样的问题。 这是我想出的代码。将这 2 个函数添加到视图控制器中,并从 viewdidload 调用第一个函数。 注释掉的位是调试集,允许您尝试不同的地理位置等以确保其工作。 这段代码可以工作,但我不太擅长快速,所以请随意指出错误或纠正它。 不要忘记在顶部添加 import userMessagingPlatform ...

  func setPermissions() {
  
    //  UMPConsentInformation.sharedInstance.reset()  // always render a consent form
    //  let debugSettings = UMPDebugSettings()
    //  debugSettings.testDeviceIdentifiers = ["your test ID here"]
    //  debugSettings.geography = .notEEA
    //  parameters.debugSettings = debugSettings
    
    let parameters = UMPRequestParameters()
    parameters.tagForUnderAgeOfConsent = false
    UMPConsentInformation.sharedInstance.requestConsentInfoUpdate(with: parameters, completionHandler: {(error) in
    if let error = error as NSError? {
       // deal with error
    } else { // now check for available form and load it
        let formStatus = UMPConsentInformation.sharedInstance.formStatus
        if formStatus == .available {
            self.loadForm()
            }
        }
    })
}
func loadForm() {
    UMPConsentForm.load(completionHandler: { (form, loadError) in
        if let error = loadError as NSError? {
           // deal with error loading form
        } else {
            if UMPConsentInformation.sharedInstance.consentStatus == .required {
            form?.present(from: self, completionHandler: {(error) in
                if UMPConsentInformation.sharedInstance.consentStatus == .obtained {
                    // OK to serve ads
                } else {
                    // not OK to serve ads
                    }
                })
            }
        }
    })
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Google 用户消息传递平台和 Objective C 到 Swift 的相关文章

  • 如何覆盖应用程序中的内部框架方法(框架外部)

    在 Swift 中子类化时是否有重写内部框架方法 前任 超类 public class BarChartRenderer ChartDataRendererBase internal func drawDataSet context con
  • Swift 错误:无法从 AST 上下文获取模块“My_App”

    我正在使用 Swift 3 Xcode 8 1 CocoaPods 1 1 1 运行后pod update 每次我尝试使用 Xcode 的 lldb 控制台时 它都会打印错误 例如 po self输出 共享 Swift 状态My App已出
  • UIView 框架更改时阴影层不调整大小

    问题图像截图 https i stack imgur com cyc5o png class ViewController UIViewController var shadow UIView override func viewDidLo
  • Swift - 必须由子类覆盖的类方法

    是否有一种标准方法可以在 Swift 中创建 纯虚函数 即 一个must被每个子类覆盖 如果不是 会导致编译时错误 您有两个选择 1 使用协议 将超类定义为协议而不是类 Pro 编译时检查每个 子类 不是实际的子类 是否实现了所需的方法 C
  • Swift UINavigationController 子类中的强制 init 覆盖

    我目前正在子类化UINavigationController对于服务视图控制器流的框架 在某种程度上 就像UIImagePickerController do 这是我的实现示例 尽可能简单 可以在操场上运行 import UIKit pub
  • 无法在 Swift 中创建文件路径

    我尝试在 Swift 中打开该文件 为此 我创建了文件路径 这不起作用 maaaacy pwd Users tsypa maaaacy cat a txt test maaaacy a swift nil maaaacy 剧本 usr bi
  • 使用 Metal 高效计算 UIImage/CIImage 中有多少透明像素

    我们可以计算有多少个透明像素的最快方法是什么CIImage UIImage 例如 如果我们谈论效率 我的第一个想法是使用Metal Kernel使用任一CIColorKernel左右 但我不明白如何使用它来输出 计数 我还有其他想法 使用某
  • Swift - 在 TableView 单元格中使用步进器递增标签

    这里又是一个 Swift 初学者 我只是想在每个 TableView 单元格中使用一个步进器来增加同一单元格中的标签 我发现了关于这个主题的几个问题 但它们包含其他元素 我无法提取基本概念 Swift Stepper Action 更改同一
  • 具有透明背景的 Swift 模态视图控制器 [重复]

    这个问题在这里已经有答案了 我知道这个话题很受欢迎 但我在编程语言中遇到了一些问题 事实是我仍然不明白我把代码放在哪里 好吧 我就来说说整个案子 我正在尝试制作一个与正常情况稍有不同的模态 Swift 通过单击按钮 ViewControll
  • Swift - 将图像插入 PDF 不再适用于 iOS 13

    目前正在开发在我的贷款计算器应用程序上导出 PDF 的功能 我有一个预览屏幕 可以在您保存 PDF 之前显示它 预览屏幕由带有 html 的 webView 组成 其中包含占位符 我能够成功地将图像插入到正确的占位符上 并将其显示在 PDF
  • SwiftUI - 从 NSObject 继承的 ObservableObject 在 iOS 13 中不会更新

    我知道 这是 无法在 iOS XX 中工作 问题之一 但我完全陷入困境 所以我有一个ObservableObject继承自的类NSObject 因为我需要听委托方法UISearchResultsUpdating class SearchBa
  • 如何无限地每1分钟运行一个iOS应用程序?

    我制作了一个应用程序 需要每 1 分钟向服务器发送一次位置和状态更新 我尝试了以下方法 但没有一个能帮助我 有什么解决办法吗 1 NSTimer 很多人建议这样做 但问题出在后台模式上 它只能工作 20 分钟 该应用程序停止发送数据后 2
  • 在 Firebase 中构建聊天应用的数据

    我正在关注 Firebase 指南结构化数据 https firebase google com docs database ios structure data flatten data structures对于聊天应用程序 他们建议的结
  • 删除具有estimatedItemSize 的项目时 UICollectionView 单元格大小会调整

    我有一个简单的项目 其中的故事板仅包含一个UICollectionViewController 使用 Xcode 7 1 1 为 iOS 9 1 构建 class ViewController UICollectionViewControl
  • Swift 包管理器:“多个目标名为...”

    我正在尝试构建一个服务器端 Swift Web 应用程序 我的应用程序的基础框架将是Kitura https www kitura io来自IBM 此外 我还想利用AWS SDK Swift https github com noppoMa
  • 将 Chrome 扩展上的权限移至可选

    我了解到 Chrome 在添加新权限时会禁用扩展程序 当我向扩展添加新功能时 我需要在permissions列表 现在我知道我应该使用optional permissions 我的问题是 如果我将网站列表从permissions to op
  • ios Vision VNImageRequestHandler方向问题

    我正在尝试使用相机通过相机检测脸部VNImageRequestHandler iOS 愿景 当我在横向模式下用相机指向照片时 它会检测到面部 但方向模式相反 let detectFaceRequestHandler VNImageReque
  • 如何从 Firebase 同步检索数据?

    我有两个集合 即用户和问题 根据使用 userId 登录的用户 我检索currQuestion价值来自users收藏 基于currQuestion值 我需要检索question来自 Firebase 的文档Questions收藏 我使用下面
  • Swift 中的 viewWillLayoutSubviews

    我正在尝试翻译SKScene scene GameScene sceneWithSize skView bounds size 进入 swift 但我收到错误 sceneWithSize 不可用 使用对象构造 SKScene size 我在
  • 来自索引范围 Swift 的新数组

    我怎样才能做这样的事情 从数组中取出前 n 个元素 newNumbers numbers 0 n 目前出现以下错误 error could not find an overload for subscript that accepts th

随机推荐

  • 基于向量重叠从列表中删除和添加元素

    我有一个包含约 500 个模型对象的列表 该对象的名称是 v1 existing list lt vector list 3 v1 lt names existing list lt c A B C 我现在得到了不同的数据集 我也需要对其进
  • 实体框架 Code First 的 Spatial / DBGeography 属性索引

    我有一个 EF 6 1 代码优先项目 其模型之一具有 DbGeography 属性 仅包含 POINT 地理 我将对其执行查询 我声明自定义索引如下官方指南 http msdn microsoft com en us data jj5916
  • 使用 ES6 (Babel) 导出类

    我正在使用 ECMAScript 6 编写一些前端代码 使用 BabelJS 进行编译 然后使用 Browserify 进行浏览器化 以便我可以在一个文件中包含一个类 将其导出并将其导入到另一个文件中 我这样做的方式是 export cla
  • SearchView.isFocused 始终返回 false

    我正在尝试确定是否SearchViewActionBar 中的焦点 但当我打电话时SearchView isFocused 我总是得到false因此 即使视图真正聚焦 内部有光标 并且显示软键盘 我如何检查是否SearchView是否专注
  • 如何在测试期间对 Node.js 内置 fs 进行存根?

    我想存根 Node js 内置组件 例如fs这样我实际上就不会进行任何系统级文件调用 我唯一能想到的就是通过fs以及所有其他内置函数作为我所有函数的参数 以避免使用真正的 fs 这看起来有点愚蠢 并且创建了一个冗长的函数签名 里面挤满了内置
  • 如何将连字符后的第一个字母大写,即 Adam Smith-Jones

    我正在寻找一种将字符串的第一个字母大写的方法 包括名称由连字符连接的位置 例如 adam smith jones 需要是 Adam Smith Jones ucwords or ucfirst 如果我把它们分成名字和姓氏 只有亚当 斯密 琼
  • Rabbitmq:代理重启后未确认的消息不会消失

    我们观察到了 RabbitMQ 的以下行为 并试图了解它是否正确以及如何解决它 设想 持久 消息被传递到持久队列中 单个 消费者 Spring AMQP 获取消息并开始处理 gt 消息从 READY 变为 UNACK 现在代理已关闭 gt
  • 使用键值存储实现的图数据库

    我需要一个图形数据库 该数据库需要备份并可能在较低的抽象级别进行访问 为了负载平衡 它也必须是分布式的 单个主复制就可以 我知道可以使用自引用键值存储来实现图形数据库 Git 对象数据库就是这种模式的一个示例 我发现大多数图数据库令人沮丧的
  • 使用Python的h5py包读取hdf文件时出错

    我想从我下载的 hdf 文件中提取数据 MODIS http modis atmos gsfc nasa gov MOD08 M3 acquiring html网站 链接中提供了示例文件 我正在使用以下代码行读取 hdf 文件 gt gt
  • render() 中的 React 函数

    在 React 组件中放置函数的位置是否有偏好 我仍在学习 React 所以只是想找出最佳实践 class Content extends React Component What is the difference between put
  • 应用内购买自动续费交易恢复问题

    我正在开发一个应用程序 用户可以在其中购买自动续订订阅 购买部分工作正常 但当用户删除应用程序并尝试恢复其购买时会出现问题 以下是我为处理该问题而编写的代码 我已经给出了一个标题为 已经是订阅者 的按钮 当用户点击时 我调用以下代码 SKP
  • 致命错误:调用未定义的函数 mb_strlen()

    我正在尝试建立一个捐赠中心 我使用 Totorialzine 的源代码 到目前为止 一切对我来说都工作得很好 但唯一的问题是我一直在努力解决并试图查看一整天 并且无法准确地弄清楚代码到底出了什么问题 这是当我的访客捐赠时我在页面上提交评论时
  • 如何为Java源代码创建数据流程图

    我用 java 编写了一个包含大约 500 个类的应用程序 现在我知道这个问题已经被问过很多次了 但我仍然找不到合适的资源或教程来为我的整个项目创建数据流程图 任何帮助 教程 资源或代码示例将不胜感激 您也许能够从单元测试中导出数据流 如果
  • 垂直分隔线 CSS

    我正在创建一个垂直分隔线 效果很好 但是CSS很麻烦 CSS 是 headerDivider1 border left 1px solid 38546d height 80px position absolute right 250px t
  • 如何从文件夹中读取每个文件并为每个文件创建单独的数据帧?

    我试图让我的代码读取包含各种文件的文件夹 我希望让 Jupyter 读取该文件夹中的每个文件 并通过将文件名称作为数据帧名称来创建单独的数据帧 到目前为止我有代码 import glob path r C Users SemR Docume
  • 有没有办法使用 C# 或 vb 从 xml 递归查找最里面的节点

    我有一个 XML 文件说
  • Kubernetes 服务中端口 0 有何用途? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 创建服务时 我在内部端点列表中看到一个条目 如下所示myservice sandbox cluster 0 TCP以及我明确打开的端口 端
  • log_file 命令不记录 Expect 脚本中命令的输出

    我正在运行调试命令以将命令的输出记录到文件中 我尝试了 log file 命令 但它没有记录输出 我的代码如下 log file a gdb txt send debugulator sh file mns20 r log user 0 e
  • 当自定义验证器使用 @Component 注释时,JSR-303 验证将被忽略

    我注意到 当使用注释的自定义 Validator bean 时 JSR 303 验证在 Spring 中被完全忽略 Component被宣布 有趣的是 所述自定义验证器甚至不需要由任何类填写或使用 事实上 Spring 扫描其组件似乎足以使
  • Google 用户消息传递平台和 Objective C 到 Swift

    因此 我已经尝试了一个多星期来让谷歌用户消息传递平台正常工作 这个问题将在接下来的几周 几个月内到处出现 问题是启动guid是用obj C写的 我看不懂 我已经设法将 obj C 代码插入到我的 swift 项目中 它可以运行 但在尝试呈现