Firebase Invites always return nil when creates the dialog on QT iOS app -
in qt app ios, how can show firebase invites dialog? when dialog created documentation sample, [firinvites invitedialog], returns nil , open method doesn't work.
this c++ qt interface used in program hide objectivec code:
invitesimpl.h.
#ifndef invitesimpl_h #define invitesimpl_h #include <qobject> namespace app { class invitesimpl: public qobject { q_object public: explicit invitesimpl(qobject *parent); ~invitesimpl(); void show(qstring title, qstring msg, qstring actiontext); signals: void cancelorerror(); void success(int numinvitations); private: void *_d; }; } #endif // invitesimpl_h invitesimpl.mm
#include "invitesimpl.h" #include "invitesobjc.h" #import <foundation/foundation.h> namespace app { invitesimpl::invitesimpl(qobject *parent): qobject(parent) { } invitesimpl::~invitesimpl() { [(invitesobjc*)_d release]; } void invitesimpl::show(qstring title, qstring msg, qstring actiontext) { _d = [[invitesobjc alloc] init]; invitesobjc *invites = (invitesobjc*) _d; [invites setinvitesimpl: this]; nsstring *nsmsg = @(msg.tostdstring().c_str()); nsstring *nstitle = @(title.tostdstring().c_str()); nsstring *nsactiontext = @(actiontext.tostdstring().c_str()); [invites show:nstitle msg:nsmsg actiontext:nsactiontext]; } void invitesimpl::cancelorerror() { emit oncancelorerror(); } void invitesimpl::success(int numinvitations) { emit onsuccess(numinvitations); } } the objectivec code uses firebase invites:
invitesobjc.h.
#ifndef invitesobjc_h #define invitesobjc_h #import <uikit/uikit.h> @interface invitesobjc : uiviewcontroller @end #endif // invitesobjc_h invitesobjc.mm
#import "invitesobjc.h" #import <firebaseinvites/firebaseinvites.h> @interface invitesobjc ()<firinvitedelegate> @property(strong, nonatomic) id<firinvitebuilder> invitedialog; @property app::invitesimpl *invitesimpl; -(void) show:(nsstring *)title msg:(nsstring *)msg actiontext:(nsstring *)actiontext; @end @implementation invitesobjc -(void) show:(nsstring *)title msg:(nsstring *)msg actiontext:(nsstring *)actiontext { _invitedialog = [firinvites invitedialog]; [_invitedialog setmessage:msg]; [_invitedialog setinvitedelegate: self]; [_invitedialog settitle: title]; [_invitedialog setcalltoactiontext:actiontext]; [_invitedialog open]; } - (void)invitefinishedwithinvitations:(nonnull nsarray *)invitationids error:(nullable nserror *)error { if (error) { _invitesimpl->cancelorerror(); } else { _invitesimpl->success(invitationids.count); } } @end
Comments
Post a Comment