测试已测试 | ✗ |
语言语言 | Obj-CObjective C |
许可 | MIT |
发布最后发布 | 2014年12月 |
依赖 | |
RestKit | ~> 0.24 |
RHAddressBook | ~> 1.1 |
libPhoneNumber-iOS | ~> 0.7 |
CocoaLumberjack | = 2.0.0-rc |
此项目是一个iOS库,可以与您的iOS项目合并,并使您能够使用Infobip社交邀请服务。
将以下文件包含到项目中
libInfobipSocialInvite.a
InfobipSocialInvite.h
ResouresCore.bundle
.a
文件添加到构建阶段 -> 链接二进制与库
.bundle
文件添加到构建阶段 -> 复制Bundle资源
将以下框架包含到您的项目中
AddressBook.framework
UIKit.framework
SystemConfiguration.framework
MobileCoreServices.framework
QuartzCore.framework
CoreData.framework
CoreTelephony.framework
CoreGraphics.framework
由于Objective-C为每个类生成一个符号,我们必须通过使用-ObjC标志强制连接器加载类的成员。我们还必须通过添加-all_load连接器标志来强制包含我们的静态库中的所有对象。如果您省略这些标志(迟早),您会遇到未识别的选择器错误或其他异常,如此处观察到的那样。
在“应用程序”目标下,在构建设置 -> 链接 -> 其他链接器标志
中添加以下标志
-ObjC
-all_load
为了使用社交邀请库,您首先必须创建一个Infobip账户(http://infobip.com/sign_up/)并注册您的移动应用程序。注册应用程序后,您将获得应用程序密钥和应用程序密钥。
下一步是为您的应用程序创建一个默认信息,之后您将获得默认消息ID。
初始化是使用库的主要功能(发送社交邀请)的必要条件。对于库的初始化,您可以调用以下方法之一
[initWithApplicationKey:APPLICATION_KEY secretKey:SECRET_KEY defaultMessageId:DEFAULT_MESSAGE_ID];
[initWithApplicationKey:APPLICATION_KEY secretKey:SECRET_KEY defaultMessageId:DEFAULT_MESSAGE_ID clientListForPlaceholder:CLIENT_LIST_FOR_PLACEHOLDERS];
此方法使用您的Infobip应用密钥、密钥和默认消息ID,所有方法的参数类型均为字符串。如果您的默认消息文本包含客户端占位符,您必须使用第二种方法(带有占位符客户端列表进行初始化)。占位符客户端列表代表了一个字符串数组,它将用于依次填充您的默认消息中的客户端占位符。在占位符客户端列表中,可以使用来自IBSIMessagePlaceholders枚举的预定义值。
+ (void)setEndUserMsisdn:(NSString *)msisdn
方法来提供电话号码;+ (void)setEndUserUsername:(NSString *)username
进行调用来提供最终用户的用户名。您还可以为占位符添加自定义值,但请记住,占位符客户端列表中的参数数量必须与您的默认消息中的客户端占位符数量匹配,否则您将收到Invalid parameters错误。
使用示例
NSArray * clientList = [NSArray arrayWithObjects:@"Your_text",@"SENDER_NAME",@"END_USER_MSISDN", nil];
[InfobipSocialInvite initWithApplicationKey:@"Your_app_key"
secretKey:@"Your_secret_key"
defaultMessageId:@"Your_default_message_id"
clientListForPlaceholders:clientList];
[InfobipSocialInvite setSenderId:@"Your_sender_id"];
[InfobipSocialInvite setEndUserMsisdn:@"Your_end_user_msisdn"];
在任意时刻,您都可以通过调用来自InfobipSocialInvite类的(BOOL)isLibraryInitialized
方法来检查库是否已初始化,如果库已初始化,将返回true值;如果未初始化,将返回false。
发送方ID可以是数字(例如,用户的MSISDN - 电话号码)或某些字母数字。如果您决定设置发送方ID,您必须注意其长度——字母数字发送方ID的最大长度为11个字符,数字发送方的最大长度为16个字符。用于设置发送方ID的方法是(void)setSenderId:(NSString *)senderId
。
使用示例
//numeric sender id
[InfobipSocialInvite setSenderId:@"your_phone_number"];
//alphanumeric sender id
[InfobipSocialInvite setSenderId:@"your_name"];
设置发送方ID后,您可以使用(NSString *)senderId
方法来查找发送方ID的字符串表示形式。
使用示例
String senderId = [InfobipSocialInvite senderId];
如上所述,在应用程序注册后,您必须为应用程序添加默认消息。此默认消息是应用程序的邀请消息。社交邀请消息文本是您的默认消息中的文本字样,其中包含您的超链接,以及可选的客户端占位符在默认消息中自定义部分。每当用户发送邀请时,消息文本将是包含超链接的默认消息文本。
如果您希望,您可以为用户提供发送个性化文本的可能性,该文本将包含在您的默认消息中(通过从InfobipSocialInvite调用(void)setMessageEditing:(BOOL)edit
方法)。在这种情况下,客户端文本将设置在客户端列表中的CUSTOM_TEXT而不是客户端占位符,并且超链接将设置为默认消息中url占位符而不是占位符。您所要做的就是启用编辑消息。如果启用消息编辑,则会在联系人表视图的底部显示消息行。此行包含要发送的消息文本和笔图标。点击该行将打开编辑消息对话框,用户可以自定义其邀请消息。用户可以选择将自定义文本的默认消息重置为不带自定义文本的默认消息。如果用户点击保存按钮,则带有其自定义文本的默认消息将发送给其联系人,直到他重置消息为默认。默认情况下,您将使用默认消息。
警告:如果您允许用户更改消息,请记住,用户可能会发送您无法批准的内容,或者可能将此功能用于其他目的(例如,如果启用了编辑消息和消息重新发送)。
为了允许您的用户向其联系人发送邀请,您必须包含包含用户通讯录中所有联系人的表格视图。要做到这一点,您必须调用以下方法
(void)startSocialInviteView:(UIViewController *)viewContoller
block:(void(^)())block;
联系人表格视图包含用户通讯录中所有联系人的列表。如果联系人用户设备上存储了图片,则列表中将显示相同的图片。如果没有,该位置将由默认图像占据。
对于具有多个电话号码的联系人,总电话号码会在邀请按钮旁边的括号中显示。当用户点击联系人时,所有号码都会在下拉列表中显示。用户可以选择仅向一个电话号码发送邀请,或者同时向所有联系号码发送邀请。
如果用户在没有活跃的互联网连接时尝试发送邀请,将显示一个对话框,警告数据连接不足。
在包含联系人表格视图后,用户只需要点击他想要邀请的联系人旁边的 邀请 按钮。如果联系人有多个号码,用户可以通过点击 邀请 按钮将邀请发送到所有号码。
如果他想选择一个号码,他必须点击联系人以获取号码列表。通过点击列表中的任何号码,邀请信息将仅发送到该特定号码。
您还可以控制用户可以向一个电话号码发送多少份邀请。如果您想要让用户可以向一个电话号码发送多次邀请,您必须启用邀请重新发送。您可以通过调用 [InfobipSocialInvite setSocialInviteResending:true]
方法来实现。
如果您希望用户只能向一个电话号码发送一次邀请,您应该使用 false [InfobipSocialInvite setSocialInviteResending:false]
参数调用前面的方法。默认情况下这是禁用的。
当用户发送邀请时,他可能想查看其派送状态。交付状态图标显示在每位受邀电话号码之前以及联系人的图片上。这样,用户就可以得到他所需要的信息。
邀请消息可能有三种状态:
每次用户打开联系人表格视图时,开始检查派送状态(挂起的电话号码)。
这些功能的绝大部分使用 HTTP 请求,如“GET”、“POST”或“PUT”。这样的请求可以作为响应返回“错误”。如果您想要处理这些错误并在错误发生时收到通知,您可以使用代理 InfobipSocialInviteDelegate。
要使用此代理,请将其添加到您的类 .h 文件中,如下所示
#import "InfobipSocialInvite.h"
@interface YourClassName: NSObject <InfobipSocialInviteDelegate>
这意味着“YourClassName”类是NSObject(或其他类)的子类,并遵守InfobipSocialInviteDelegate协议。
委托协议存在是为了确保委托对象有处理您消息所需的必要方法。委托协议中的方法可以是可选的或强制性的。任何可选的方法都不必定义。所有在InfobipSocialInviteDelegate中的方法都是可选的,因此您可以选择使用哪一个。
如果您想当发送邀请返回错误时包含您的代码,请在其类中定义方法-(void)sendInviteDidReceiveErrorResponse:(NSError *)error
并在其体内包含您的代码。要使用发送邀请的成功响应与委托方法-(void)sendInviteDidReceiveSuccessfulResponse:(SendSmsResponse *)response
一起工作。
对于投递状态错误,定义方法-(void)getDeliveryInfoDidReceiveErrorResponse:(NSError *)error
。对于成功响应,使用方法-(void)getDeliveryInfoDidReceiveSuccessfulResponse:(SocialInviteDelivery *)response
。
“编辑消息”可以获取默认消息,因此您可以使用以下方法获取错误:-(void)getMessageDidReceiveErrorResponse:(NSError *)error
。对于成功响应,使用:-(void)getMessageDidReceiveSuccessfulResponse:(ClientMobileApplicationMessageResponse *)response
。
框架集成团队 @ Infobip 贝尔格莱德,塞尔维亚
IOS是美国Cisco的商标,在其他国家也有使用,并在此许可下使用。
© 2014, Infobip Ltd.