在 iOS 上使用 null 调用 forge.facebook.ui 回调

Posted

技术标签:

【中文标题】在 iOS 上使用 null 调用 forge.facebook.ui 回调【英文标题】:forge.facebook.ui callback invoked with null on iOS 【发布时间】:2012-11-11 02:08:30 【问题描述】:

我在使用 Trigger.io Forge 并从本机 FB 好友选择器 UI 获得回调时遇到问题。 该问题仅在 ios 上显示,在 android 上运行良好。

在 iPhone 设备或模拟器上的 Catalyst 中运行此代码会导致 FB 对话框正确显示。

>forge.facebook.ui(
        method: 'apprequests',
        message: 'Hey'
    , function(a)console.log('success: '+JSON.stringify(a)), function(error) console.log('error:'+JSON.stringify(error)));
>undefined
>success: null

选择某些用户并发送对话请求关闭,但从未调用回调。 Forge 调试日志中显示以下内容:

[DEBUG] Native call: 
[DEBUG]     callid = "35938A56-CEEC-44E1-8742-889D273F6E9E";
[DEBUG]     method = "facebook.ui";
[DEBUG]     params =     
[DEBUG]         "exclude_ids" = "";
[DEBUG]         message = "invited you to play Halo 4";
[DEBUG]         method = apprequests;
[DEBUG]     ;
[DEBUG]     start = "1353579502.975";
[DEBUG] 
[DEBUG] Returning to javascript: 
[DEBUG]     callid = "35938A56-CEEC-44E1-8742-889D273F6E9E";
[DEBUG]     content = "<null>";
[DEBUG]     status = success;
[DEBUG] 
[DEBUG] 2012-12-05 13:04:09.631 Forge[5110:c07] An instance 0x9dd3700 of class  FBSessionManualTokenCachingStrategy was deallocated while key value observers were still registered with it. Observation info was leaked, and may even become mistakenly attached to some other object. Set a breakpoint on NSKVODeallocateBreak to stop here in the debugger. Here's the current observation info:
[DEBUG] <NSKeyValueObservationInfo 0x9dcad90> (
[DEBUG] <NSKeyValueObservance 0x9dd1300: Observer: 0x9de4680, Key path: accessToken, Options: <New: NO, Old: NO, Prior: YES> Context: 0x112ad4, Property: 0xc9a6fe0>
[DEBUG] <NSKeyValueObservance 0x9dbba50: Observer: 0x9de4680, Key path: expirationDate, Options: <New: NO, Old: NO, Prior: YES> Context: 0x112ad4, Property: 0xc9a0a60>
[DEBUG] )

我们尝试了 Forge 版本 1.4、1.4.21,没有任何乐趣。我认为这与回调内容 = null 有关。

感谢您的帮助。

更新 詹姆斯,你是对的 - iPhone 回调 is 被调用,但响应始终为空。我希望收到一个带有 FB 用户 ID 和请求 ID 的对象。

作为参考,Android 工作正常,并返回:

[DEBUG] Native call "facebook.ui" with task.params: "method":"apprequests","message":"Hey"
[DEBUG] Returning: "content":"to[0]":"100004602392907","request":"453015091412347",
                                   "to[1]":"515252483",
                                    "status":"success",
                                    "callid":"ED47AAB4-7A72-45A0-B0B3-0DADC9A75E9C"

如果用户取消 FB 对话,则会返回:

[DEBUG] Returning: "content":,"status":"success",
                        "callid":"256CB78F-3EE1-4BD7-8990-EDE26275D68F"

【问题讨论】:

你确定你的成功回调没有被调用吗?我刚刚尝试了您的代码 sn-p 并使用null 调用了我的回调。您是否尝试过添加错误回调以防 facebook.ui 调用出现问题? 谢谢詹姆斯。你是对的,成功回调被调用。 (确实尝试添加错误回调,但显然没有被调用。)我们只在 iOS 上得到 null,但期望一个具有 FB ID 等的对象。已经用示例更新了上面的问题,干杯。 【参考方案1】:

对此的修复将包含在 v1.4.23 Trigger.io 平台版本中。

您的成功回调将被调用(例如对于应用请求):

"request":"519074534448448","to[0]":"105000524002524"

注意:如果用户点击取消,您的成功回调仍然会被调用: 将作为回调参数传递。

如果他们点击左上角的x,将调用您的失败回调。

【讨论】:

传奇。你们什么时候推出 .23?

以上是关于在 iOS 上使用 null 调用 forge.facebook.ui 回调的主要内容,如果未能解决你的问题,请参考以下文章

Flutter ios 共享首选项显示 setstring on null 错误

获取'无法在grails Spring安全性休息中调用null对象上的方法loadUserByUsername()'

在使用 iOS 7 的 iPhone 5s 上写入 /dev/null 时,AVAudioRecorder 停止工作

在 NULL 指针上调用 delete 或 delete[] [重复]

在 null 上调用了方法“timeZone”。 (颤振)[重复]

NoSuchMethodError:在 null 上调用了方法 'ref'