- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我如何创建自定义邀请以显示来自广告商的发现信息?
这是来 self 的广告客户的代码:
// create Discovery Info
NSArray *objects=[[NSArray alloc] initWithObjects:@"datguy",@"28", nil];
NSArray *keys = [[NSArray alloc] initWithObjects:@"Name",@"Age", nil];
self.dictionaryInfo = [[NSDictionary alloc] initWithObjects:objects forKeys:keys];
// Setup Advertiser
self.advertiser = [[MCAdvertiserAssistant alloc] initWithServiceType:@"txt_msg_service" discoveryInfo:self.dictionaryInfo session:self.advertiseSession];
[self.advertiser start];
最佳答案
我想你搞反了。 IFAIK,MCAdvertiserAssistant 的 discoveryInfo 是广告商为浏览器传递的信息。此信息传递给:
- (void)browser:(MCNearbyServiceBrowser *)browser foundPeer:(MCPeerID *)peerID withDiscoveryInfo:(NSDictionary *)info
这是 MCNearbyServiceBrowser 类的委托(delegate)方法。对此:
– browserViewController:shouldPresentNearbyPeer:withDiscoveryInfo:
Which is the delegate for the MCBrowserViewController class.
此信息应用于检查是否应为您的用户显示此广告商。
如果您有兴趣拦截邀请尝试,您应该考虑使用 MCNearbyServiceAdvertiser 类而不是助手。通过这种方式,您可以委托(delegate) didReceiveInvitationFromPeer 方法并向其添加一些自定义逻辑:
// pedido para entrar na sala.
- (void)advertiser:(MCNearbyServiceAdvertiser *)advertiser didReceiveInvitationFromPeer:(MCPeerID *)peerID
withContext:(NSData *)context
invitationHandler:(void (^)(BOOL accept, MCSession *session))invitationHandler {
// get the browser's info
NSDictionary *peerInfo = (NSDictionary *) [NSKeyedUnarchiver unarchiveObjectWithData:context];
//check if peer is valid for this room (add your custom logic in this method)
if ([self isValidForThisRoom:peerInfo]) {
//create an alert
NSObject *clientName = [peerInfo valueForKey:@"playerName"];
NSString *clientMessage = [[NSString alloc] initWithFormat:@"%@ wants to connect. Accept?", clientName];
UIAlertView *alertView = [[UIAlertView alloc]
initWithTitle:@"Accept Connection?"
message:clientMessage
delegate:self
cancelButtonTitle:@"No"
otherButtonTitles:@"Yes", nil];
[alertView show];
// copy the invitationHandler block to an array to use it later
ArrayInvitationHandler = [NSArray arrayWithObject:[invitationHandler copy]];
} else {
// if the peer is not valid, decline the invitation
invitationHandler(NO, _session);
}
}
在 alertview 的 clickedButtonAtIndex 委托(delegate)上,您可以执行如下操作:
- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex {
//obtem a decisao do usuario
BOOL accept = (buttonIndex != alertView.cancelButtonIndex) ? YES : NO;
// obtem o invitationHandler que foi guardado do didReceiveInvitationFromPeer
void (^invitationHandler)(BOOL, MCSession *) = [ArrayInvitationHandler objectAtIndex:0];
// chama o invitationHandler passando a nossa session
invitationHandler(accept, _session);
}
需要注意的两件重要事情是:
您的 session 对象应该是一个实例变量,而不是我在某些代码示例中看到的本地变量。根据我的经验,我只是创建了一个静态共享实例来存储 session 对象。如果您想将 session 从一个屏幕传递到另一个屏幕,这也是一个不错的计划。
请注意,您应该创建一个 NSArray *ArrayInvitationHandler;存储 block 代码的变量。我尝试执行 Block_copy,但出现了一些转换错误,所以 someone在 stackoverflow 中,这里决定存储在一个数组中,我认为这已经足够优雅了。
无论如何,我使用这个设置让它工作。希望对你有帮助:D
关于IOS7 Multipeer Connectivity 创建带有发现信息的自定义邀请,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19123534/
有人知道 MCF 框架在不使用 MCBrowserViewController(将通过 MCNearbyServiceAdvertiserDelegate 和 MCNearbyServiceBrows
我的问题是关于多功能框的。 Chrome API 提供的想法,我想知道是否有可能在 list 上有多个关键字。 我在考虑正则表达式或类似的东西,但我真的不知道该怎么做...... 最佳答案 我想我刚刚
iOS12 Swift 5.x 我使用多点连接。到目前为止,如果我以正确的顺序连接我的设备,它运行良好。 使用样板代码,将问题追踪到此处。 func setupStream() { do {
当两台设备通过 Multipeer 连接连接时,我希望将两部手机中的任何一部调用给第三部手机。 这可能吗?对于前。 iphone1 和 iPhone 2 使用 multipeer 连接我想通过 iPh
我的设置是这样的:我同时运行 0 到 8 个设备,并且可以随时添加或删除设备。 我想使用 iOS 7 Multipeer 框架来连接它们。我让它在受控环境中工作,我可以在广告商模式下启动 1-7 台设
我正在努力解决一个问题。我想向连接的设备发送一个结构。 这是我使用的复制到 Playground 中的代码 在代码中,我为数据类添加了一些扩展用于编码/解码。我创建了 [String:Player]
嘿,我在 ios 中为聊天应用程序使用多对等连接框架。此框架是否支持任何加密。我想了解此框架中使用的加密,如 AES 或 RSA 加密系统?我的发现或研究: 1. https://datatheore
我想为我的应用程序使用 Multipeer Connectivity 功能。 APP功能简介:该应用程序应扫描运行该应用程序的其他设备(在后台),连接到它们并传输一些数据。所有这些都无需与用户交互。
目前我正在探索多点连接框架。我的应用程序 Advertiser & Browser 中有 2 个选项。 因此,当用户在一台设备上启动浏览器,而广告商在另一台设备上启动时,他们应该能够找到彼此。当设备出
我如何创建自定义邀请以显示来自广告商的发现信息? 这是来 self 的广告客户的代码: // create Discovery Info NSArray *objects=[[NSArray allo
我正在从教程网站学习 iOS 的多点连接框架 http://www.ralfebert.de/tutorials/ios-swift-multipeer-connectivity/ . 所提供的示例对
我正在使用 Multipeer Connectivity Framework在IOS7下做一个聊天应用。我正在使用内置的 MCBrowserViewController 来显示附近的同伴列表。 我想在
我有一个使用 MultiPeer Connectivity 框架的应用程序。每次应用程序在 AppDelegate 中变得活跃时,我都会创建一个新的 MCSession 一个 MCNearbyBrow
我在使用第三方库时遇到了问题,并且不确定解决该问题的常见模式是什么。 我正在使用 asi-http-request 类,它使用线程异步获取 http 对象。 在我的对象 dealloc() 方法中,我
我正在使用此方法要求附近的设备加入 session : 当我这样做时,我也开始旋转指标 [browser invitePeer:key toSession:session
我正在编写一个应用程序,它应该可以在没有连接到移动运营商且没有本地 WiFi 的情况下运行。每个设备都将充当发射器、接收器和路由器。到目前为止,我的主要挑战是我无法弄清楚 MultipeerConne
我正在使用主机/客户端方法来使用 MultiPeer 连接。 所以,当用户按下断开连接按钮时 -(IBAction)disconnect:(id)sender { [_appDelegate.
我有一个应用程序使用 Multipeer Connectivity 在设备之间发送文件。在接收设备上,didFinishReceivingResourceWithNamelocalURL 被调用,但是
我目前有两台设备通过多对等连接框架相互连接。连接后,每个设备都会立即相互发送一个 nsdata 数据包,在第一个实例中,数据将包含声音和图像。这似乎工作正常,并且两个用户都收到了相关数据。 用户现在可
我刚开始在 xcode 中使用 objective-c 编写 Multipeer 连接。我有几个关于基础知识的问题。 Multipeer Connectivity 的范围是多少?那么如果我做一个聊天程
我是一名优秀的程序员,十分优秀!