DevStore首页 > DEV资源 > 服务评测下载 > Arrownock箭扣iOS版V3.0.1服务评测

Arrownock箭扣iOS版V3.0.1服务评测

查看服务>>
DevStore编辑 刘艳丽 | 2015-12-04 14:49    浏览量(3561)    纠错    评论(0)    箭扣社交云服务服务详情>>

服务评测作者

  • 2 能力值
  • 0 源码
  • 1 评测
  • 0 资料

评测目录

集成测试

评测环境

集成过程

综合点评

测试点评

适用人群

客服反馈

问题解答

集成测试

评测环境

评测环境:

测试对象

 Arrownock iOS SDK 3.0.1

测试环境

 MAC OS (10.10.5) + XCode (7.1)

测试设备

 Iphone 6

系统版本

 iOS 9.1

设备网络

 3G/4G/wifi

测试方法

 客户端运行实例+测试API接口

测试时间

 2015-11-29 14:10

测试时长

 3小时


基本参数:

是否免费

 免费

支持平台

 Android、iOS

消息墙

 支持

朋友圈

 支持

推送

 支持

即时通讯

 支持

应用数据统计

 支持

集成过程

客户端集成

如何快速集成arrownock:

注册arrownock帐号=》创建应用=》下载SDK=》集成开发=》测试应用=》发布应用

1、注册arrownock账号

arrownock的注册地址: http://admin.arrownock.com

2、创建新应用

登录后进入应用管理中心主页,点击左上角的创建引用:

创建应用

创建新应用

输出应用名称和描述后提交,创建成功后进入应用详情页。

进入设置页面选择应用密钥可以看到应用密钥信息:

应用密钥

3、下载IOS SDK

iOS SDK下载地址

http://docs.arrownock.com/downloads

4、集成开发

(1)新建一个工程

新建工程

(2)添加静态库

将下载的iOS SDK压缩包中的libArrownock.a和include文件夹中得文件全部加入到工程中去。再添加如下图所示的库:

添加静态库

(3)导入头文件

在工程中会用到anPush、anIM、anSocial、anLive,和应用的APPKEY,为方便使用,在AppDelegate文件先加入如下代码:

鍥剧墖6.pn

(4)推送的配置

在使用推送之前,先去苹果开发者网站创建一个APPID,并为 App 开启 Push Notification功能,注意应用的bundleID要与创建工程的BundleID一致,创建APPID完成后为APP申请一个推送证书,下载这个证书并安装。打开钥匙串,导出这个证书,并保存为Certificates.p12放到桌面,密码可不填。

打开Arrownock网站,进入应用设置页面,选择推送设置iOS;

推送设置iOS

这里测试选择的时开发环境证书,点击Browse选择刚才保存的.p12文件证书,保存即可。

(5)编码实现推送

在 AppDelegate.m 的 didFinishLaunchingWithOptions 方法中调用 AnPush.registerForPushNotification 方法开启该设备接收推送消息的功能

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions  {      [AnPush registerForPushNotification:(UIUserNotificationTypeAlert |                                           UIUserNotificationTypeBadge |                                           UIUserNotificationTypeSound)];      return YES;  }

在 AppDelegate.m 中实现 didRegisterForRemoteNotificationsWithDeviceToken 方法接收并保存 device token, 同时初始化 AnPush 实例:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken  {      // 初始化 AnPush 实例      [AnPush setup:appKey deviceToken:deviceToken secure:YES];       // 开启推送服务      [[AnPush shared] enable];  }

(6)即时通讯

首先初始化IM 

NSString *appKey = @"this_is_your_AnIM_appKey"; AnIM *anIM = [[AnIM alloc] initWithAppKey:appKey delegate:theAnIMDelegateInstance secure:YES];

获取clientId,并连接到服务器

NSString *userId = @"the_unique_symbol_within_one_Arrownock_App"; [anIM getClientId:userId success:^(NSString *clientId) {     NSLog(clientId); [anIM connect:clientId];
 } failure:^(ArrownockException *exception) {     //TODO 获取ClientId失败 }];

获取clientId当连接成功时,下面的回调方法会被触发

- (void)anIM:(AnIM *)anIM didUpdateStatus:(BOOL)status exception:(ArrownockException *)exception;

发送文本消息

NSString *msg = @"this is the text message"; NSString *targetClientId = @"AIMOMA9HOPAF9AGEVOLF9UM"; [_anIM sendMessage:msg toClient:targetClientId needReceiveACK:NO];

当消息到底接收方时,下面的回调方法会被触发

- (void)anIM:(AnIM *)anIM didReceiveMessage:(NSString *)message customData:(NSDictionary *)customData from:(NSString *)from parties:(NSSet *)parties messageId:(NSString *)messageId at:(NSNumber *)timestamp

发送图片二进制数据消息

NSString *thePath = [[NSBundle mainBundle] pathForResource:@"myAudio" ofType:@"mp3"]; NSData *data = [[NSData alloc] initWithContentsOfFile:thePath]; NSString *targetClientId = @"AIMOMA9HOPAF9AGEVOLF9UM"; [anIM sendBinary:data fileType:@"mp3" toClient:targetClientId needReceiveACK:NO];

当消息到底接收方时,下面的回调方法会被触发

- (void)anIM:(AnIM *)anIM didReceiveBinary:(NSData *)data fileType:(NSString *)fileType customData:(NSDictionary *)customData from:(NSString *)from parties:(NSSet *)parties messageId:(NSString *)messageId at:(NSNumber *)timestamp;

(7)使用anSocial

初始化anSocial

AnSocial *anSocial = = [[AnSocial alloc]initWithAppKey:@"<your_app_key>"];

创建用户,同时上传用户的头像

NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; [params setObject:@"testuser" forKey:@"username"]; [params setObject:@"123456" forKey:@"password"]; [params setObject:@"123456" forKey:@"password_confirmation"];  //从相册取出图片 UIImage *image = [info objectForKey:@"UIImagePickerControllerOriginalImage"]; NSData *imageData = UIImageJPEGRepresentation(image, 0.1); AnSocialFile* file = [AnSocialFile createWithFileName:@"test.png" data:imageData]; [params setObject:file forKey:@"photo"]; [params setObject:@"image/png" forKey:@"mime_type"];  [_anSocial sendRequest:@"users/create.json" method:AnSocialMethodPOST params:params success:^  (NSDictionary *response) {     for (id key in response)     {         NSLog(@"key: %@ ,value: %@",key,[response objectForKey:key]);     }     //[self handleSucc:response]; 处理成功的方法   } failure:^(NSDictionary *response) {     //[self handleFailure:response]; 处理失败的方法  }];

查询用户

NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; [params setObject:@"testuser" forKey:@"username"];  [_anSocial sendRequest:@"users/query.json" method:AnSocialMethodGET params:params success:^  (NSDictionary *response) {     for (id key in response)     {         NSLog(@"key: %@ ,value: %@",key,[response objectForKey:key]);     }     //[self handleSucc:response]; 处理成功的方法   } failure:^(NSDictionary *response) {     //[self handleFailure:response]; 处理失败的方法  }];

修改用户

NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; [params setObject:@"51fc911692597a0000000001" forKey:@"user_id"]; [params setObject:@"updateUser" forKey:@"username"]; NSMutableDictionary *customFields = [[NSMutableDictionary alloc] init]; [customFields setObject:@"test1" forKey:@"customData1"]; [customFields setObject:@"ok" forKey:@"customData2"]; [params setObject:customFields forKey:@"custom_fields"];  [_anSocial sendRequest:@"users/update.json" method:AnSocialMethodPOST params:params success:^  (NSDictionary *response) {     for (id key in response)     {         NSLog(@"key: %@ ,value: %@",key,[response objectForKey:key]);     }     //[self handleSucc:response]; 处理成功的方法   } failure:^(NSDictionary *response) {     //[self handleFailure:response]; 处理失败的方法  }];

删除用户

NSMutableDictionary *params = [[NSMutableDictionary alloc] init]; [params setObject:@"51fc911692597a0000000001" forKey:@"user_ids"];  [_anSocial sendRequest:@"users/delete.json" method:AnSocialMethodPOST params:params success:^  (NSDictionary *response) {     for (id key in response)     {         NSLog(@"key: %@ ,value: %@",key,[response objectForKey:key]);     }     //[self handleSucc:response]; 处理成功的方法   } failure:^(NSDictionary *response) {     //[self handleFailure:response]; 处理失败的方法  }];

(8)使用anLive

初始化anLive,发起视频

[AnLive setup:anIM delegate:self.anLiveEventDelegate]; [self startRingtone];  //播放呼叫铃音 [[AnLive shared] videoCall:targetClientId video:YES notificationData:nil  success:^(NSString *sessionId) {     // 视频通话请求建立成功,正在等待对方应答     NSLog(@"Waiting for target client to answer the call...");     } failure:^(ArrownockException *exception) {     // 视频通话建立失败     [self stopRingtone];    //停止呼叫铃音 }];

接收方接受视频请求

[[AnLive shared] answer:YES];

结束视频

[[AnLive shared] hangup];

主要功能

推送消息:

推送消息

创建用户:

创建用户

注册IM用户:

注册IM用户

功能特色

应用数据统计:

鍥剧墖11.p

推送日志:

推送日志

遇到问题

· 加入lib文件后,编译报错,找不到头文件:

找到Targets的Search Paths,把Library Search Paths设置为相对路径;

· 导入framework后,可能会出现编译报错:

在Build Settings中,设置Other Linker Flags为-Objc。

上手难易

Arrownock集成简单,开发者只需要花费少量时间看开发参考文档即可知道相关API的调用方法,结合SDK参考指南挑选自己需要用到的API就可以集成到自己的项目中。

开发文档

iOS版本的arrownock SDK参考文档地址:http://docs.arrownock.com/docs/ansocial/user/create这里可以看到各个类的API接口方法,如果是新手的话,可以参考快速开发指南和开发参考文档。

此服务评测版权归DevStore所有,禁止转载,申请升级为 特约评测员 才可进行测评立即申请

声明:DevStore评测内容都是基于专业评测人员/开发者通过真实的测试之后得出的数据,服务版本实时都在更新,所以评测并不一定是此服务的最新版本,但我们会秉承公正专业精准的态度,对开发者负责,同时欢迎大家监督和建议,如对评测内容有异议,请提交纠错,由专业的评测团队再次评测,我们会尽最大努力为大家提供更贴心的服务。

DevStore_全球首家第三方开发者服务商店,最精准的服务对比、最专业的服务评测、最及时的行业动态,为开发者挑选服务提供最全面的参考和专业分析,加入DevStore,从此告别熬夜加班,你也可以这么帅!搜索微信号:DevStore

评论(0)