在IOS中在设备中构建应用程序时Twilio崩溃

时间:2015-07-14 09:30:55

标签: ios objective-c twilio

我已经通过可可豆荚添加了Twilio SDK和libJingleConnection。

像libssl.a,libcryto.a这样的Twilio库与libwebrtc.a之类的Libjingle_Connection库发生冲突,所以twilio崩溃了..没有集成libjingle_connection。

Twilio集成工作正常。

类似于以下问题

When using Twilio iOS sdk and building Cordova app openssl crashes

但我需要在我的项目中保留libjingle_connection和twilio。

当我在设备中构建应用程序时。我的应用程序崩溃如下..

Twilio_Crash

我的其他链接器标志是-ObjC和$(继承)

我无法找到崩溃的原因..

请建议任何解决方法以解决错误..

提前致谢...!

2 个答案:

答案 0 :(得分:2)

Hiii,

请按照步骤在应用中集成twilio。

第1步:导入所需的框架

enter image description here

第2步:将标题和图书馆文件夹复制到您的项目中。

步骤3:添加其他链接器标志(不仅是-ObjC而且是-lTwilioClient,-lcrypto,-lssl)

enter image description here

第4步:添加标题和库搜索路径

您复制的标头文件夹的路径:$(SRCROOT)/标头

您复制的Library文件夹的路径:$(SRCROOT)/ Libraries

步骤5:添加前缀头文件

#import <Availability.h>
#ifndef __IPHONE_4_0
#warning "This project uses features only available in iOS SDK 4.0 and later."
#endif
#ifdef __OBJC__
#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>
#import <CoreData/CoreData.h>
#endif

在构建设置中将Precompile Prefix标头设置为yes,以及.pch文件的路径。

完成此步骤后,您的项目应该编译和构建,您可以运行它,但是,要使用twilio,您需要生成功能令牌。

步骤6:从Twilio的BasicPhone示例中复制项目中的basicPhone.h和basicPhone.m文件。

然后在Appdelegate中创建一个我们可以在项目中访问的全局对象。

在appdelegate.h中

@class BasicPhone;
@interface AppDelegate : UIResponder <UIApplicationDelegate>{


BasicPhone *_phone;
}
@property (strong, nonatomic)BasicPhone *phone;

在appDelegate.m文件中合成它

@synthesize phone = _phone;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
if ([UIApplication instancesRespondToSelector:@selector(registerUserNotificationSettings:)]){
    /* iOS 8.0 later */
    [application registerUserNotificationSettings:[UIUserNotificationSettings settingsForTypes:UIUserNotificationTypeAlert|
                                                   UIUserNotificationTypeBadge|
                                                   UIUserNotificationTypeSound
                                                                                    categories:nil]];
}   
self.phone = [[BasicPhone alloc] init];
}

第7步:功能令牌:

检查此Link以了解如何生成功能令牌。

步骤8:创建一个makeCall.php文件,并在你的twiML应用程序(Twilio acc)中设置它的拨打链接。

第9步:从xcode注册到客户端。

在你的basicPhone.h文件中

#define BPDefaultClientName @"abc"
#define BPCapabilityTokenKeyIncomingClient @"abc"

在你的basicPhone.m方法中你必须有函数

getCapabilityTokenWithParameters

使用您的capabilitiesToken网址更改urlString。

如果您想要传入和传出,那么您的功能令牌网址应该是这样的:

https://abc.herokuapp.com/token?allowOutgoing=true&client=abc

步骤10:在你的viewcontroller.h中登录twilio

创建basicPhone的对象

@class BasicPhone;
@interface ViewController : UIViewController{

BasicPhone* _phone;
}
@property (nonatomic,retain) BasicPhone* phone;
ViewController.m中的

@synthesize phone=_phone;
- (void)viewDidLoad {
[super viewDidLoad];
AppDelegate* delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
    BasicPhone* basicPhone = delegate.phone;

    [basicPhone login];
}

发出电话:

NSDictionary* dictParams = [NSDictionary dictionaryWithObjectsAndKeys:@"xyz", @"To", nil];
NSLog(@"%@",dictParams);
AppDelegate* delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
BasicPhone* basicPhone = delegate.phone;
[basicPhone connectWithParams:dictParams];

这就是我的做法,它的工作没有任何问题。

如果有帮助,我会感觉很好。

答案 1 :(得分:0)

从其他链接器标志中删除-objC。它对我有用