Отправка уведомлений (showRequestBox). При клике на фото

Готовые уроки IFrame + ВКонтакте API

Отправка уведомлений (showRequestBox). При клике на фото

Сообщение BIOS » 29 мар 2012, 23:04

Взял данную тему за основу =) topic3484.html

Кому то будет полезно

  1. <html>
  2. <head>
  3. <script src="http://vkontakte.ru/js/api/xd_connection.js?2" type="text/javascript"></script>
  4. <script type="text/javascript" charset="cp1251" >
  5. window.onload = (function() {
  6.     VK.init(function() {
  7.         // выполняем запрос получения списка друзей
  8.         VK.api("friends.get", {}, function(dataAllFriends) {
  9.             // после получения списка друзей, выполняем запрос получения списка друзей установивших приложение
  10.             VK.api("friends.getAppUsers", {}, function(dataAppUsers) {
  11.                     // !!! ОБРАТИТЕ ВНИМАНИЕ, что вместо "data", привычной многим "просто-копипастерам-кода", используются dataAllFriends и dataAppUsers. Благодаря этому вторая переменная не перезапишет значения первой.
  12.                    
  13.                     // узнаем количество друзей
  14.                     var frCount = dataAllFriends.response.length;
  15.                     // количество установивших приложение
  16.                     var appCount = dataAppUsers.response.length;
  17.                    
  18.                     // создаём массив друзей, которые не установили приложение
  19.                     var noApp = dataAllFriends.response; // cначала записываем всех друзей в массив, дальше будем удалять из него установивших
  20.                    
  21.                     if (appCount<frCount) { // если все друзья установили, то нет смысла и проверять
  22.                         // кол-во установивших приложение никогда не будет больше чем общее количество друзей, поэтому в первом цикле будем пробегаться по массиву установивших
  23.                         for (i=0;i<appCount;i++) {
  24.                             for(j=0;j<frCount;j++){
  25.                                 // если нашли в массиве всех друзей тот, который в списке установивших - удаляем
  26.                                 if (dataAppUsers.response[i]==noApp[j]) {
  27.                                     // вырезаем такой id
  28.                                     noApp.splice(j,1);
  29.                                     // прерываем цикл. Перебирать дальше нет смысла.
  30.                                     break;
  31.                                 }
  32.                             }
  33.                         }
  34.                     }
  35.                    
  36.                     // теперь в массиве noApp храняться id друзей, которые не установили приложение
  37.                     var noAppCount = noApp.length;
  38.                     document.getElementById('uids_count').innerHTML = 'Количество друзей, не установивших приложение: ' + noAppCount;
  39.                    
  40.                     // выведем ссылки на профили трех из этих пользователей
  41.                     // смысл получать профили есть только если массив пользователей не пустой
  42.                     if (noAppCount>0) {                
  43.                         // если не установили приложение менее 4х друзей, то выведем только их
  44.                         if (noAppCount<4) {
  45.                             // просто превращаем массив пользователей в строку
  46.                             var noAppUids = noApp.join(',');
  47.                         } else {
  48.                             // выбираем случайных трёх, причем исключаем вероятность выбора одного и того же пользователя
  49.                             // сделаем это так: выберем одного и удалим его из массива и т.д.
  50.                             var uidCount = 3; // количество профилей
  51.                             var uidArr = []; // в этот массив запишем id
  52.                            
  53.                             for (i=0;i<uidCount;i++) {
  54.                                 var max = noApp.length-1;
  55.                                 var rand = Math.floor(Math.random()*max);
  56.                                 uidArr.push(noApp[rand]);
  57.                                 noApp.splice(rand,1);
  58.                             }
  59.                             // превращаем массив в строку
  60.                             noAppUids = uidArr.join(',');
  61.                         }
  62.                        
  63.                        
  64.                        
  65.                         VK.api("getProfiles", {uids:noAppUids,fields:"photo_rec"}, function(data) {
  66.                             // узнаем количество полученных профилей
  67.                             var profilesCount = data.response.length;
  68.                            
  69.                             // в эту переменную запишем html код для вывода списка пользвоателей
  70.                             var profilesStr = '';
  71.                            
  72.                             for (var i=0; i<profilesCount; i++) {
  73.                                 profilesStr += '<a onclick="VK.callMethod('showRequestBox', '+data.response[i].uid+', 'Рекомендую посмотреть ({title}) в отличном качестве ');" ><img src="' + data.response[i].photo_rec + '" title="' + data.response[i].first_name + ' ' + data.response[i].last_name + '"/></a> ';
  74.                             }
  75.                             document.getElementById('friends_list').innerHTML = profilesStr;
  76.                            
  77.                             // http://flapps.ru
  78.                         });
  79.                     }
  80.             });
  81.         });
  82.     });
  83. });
  84. </script>
  85. </head>
  86. <body>
  87. <div id="uids_count"></div>
  88. <div id="friends_list"></div>
  89. <a href="http://flapps.ru">http://flapps.ru</a>
  90. </body>
  91. </html>


Добавив в 73 строку вот такой код =)

  1. <a onclick="VK.callMethod('showRequestBox', '+data.response[i].uid+', 'Рекомендую посмотреть ({title}) в отличном качестве ');" ><img src="' + data.response[i].photo_rec + '" title="' + data.response[i].first_name + ' ' + data.response[i].last_name + '"/></a>
Аватара пользователя
BIOS
КИДАЛА!
 
Автор темы
Сообщения: 68
Зарегистрирован: 04 ноя 2009, 10:43
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Чтобы убрать блок с рекламой, зарегистрируйтесь на форуме или войдите.

Google
 



Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение Abdul-Ibn-Abusheih » 29 мар 2012, 23:59

Может кто то для флэша напишет?
Abdul-Ibn-Abusheih
ЗАБАНЕН!
 
Сообщения: 430
Зарегистрирован: 02 мар 2012, 19:15
Благодарил (а): 4 раз.
Поблагодарили: 6 раз.

Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение hahaha » 30 мар 2012, 21:57

чё-то не работает...
hahaha

 
Сообщения: 86
Зарегистрирован: 04 янв 2012, 14:52
Благодарил (а): 25 раз.
Поблагодарили: 0 раз.

Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение BIOS » 30 мар 2012, 23:37

Включи в настройках приложения отправку уведомлений
Аватара пользователя
BIOS
КИДАЛА!
 
Автор темы
Сообщения: 68
Зарегистрирован: 04 ноя 2009, 10:43
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение Mihailow_du » 07 апр 2012, 17:45

Т.е. измения только в 73 строке??
А то у меня тот оригинальный код работает - добавляю эту вашу 73ую строчку и все тот мой код "умирает" и уже больше ничего не выводит на экран...
Не идите за мной - я сам заблудился...
Карта/справочник некоторых городов:
http://vk.com/app2170107 <-- входите!
Аватара пользователя
Mihailow_du

 
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26
Откуда: Красноярск
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.

Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение anton37 » 07 апр 2012, 21:39

Вот рабочий код по крайне мере у меня работает :http://vk.com/caual_app

  1. <script type="text/javascript">
  2.                     VK.api("friends.get", {}, function(dataAllFriends) {
  3.             VK.api("friends.getAppUsers", {}, function(dataAppUsers) {
  4.             var frCount = dataAllFriends.response.length;
  5.             var appCount = dataAppUsers.response.length;
  6.             var noApp = dataAllFriends.response;
  7.             if (appCount<frCount) {
  8.                 for (i=0;i<appCount;i++) {
  9.                     for(j=0;j<frCount;j++){
  10.                         if (dataAppUsers.response[i]==noApp[j]) {
  11.                         noApp.splice(j,1);
  12.                         break;
  13.                         }
  14.                     }
  15.                 }
  16.             }
  17.             var noAppCount = noApp.length;
  18.             document.getElementById('uids_count').innerHTML = '<center>Кол-во друзей, не установивших приложение: <font color="red"><b>'+noAppCount+'</b></font>';
  19.             if (noAppCount>0) {
  20.                 if (noAppCount<8) {  // здесь ставь то количество выводимых , сколко надо +1
  21.                 var noAppUids = noApp.join(',');
  22.                 } else {
  23.                         var uidCount = 7; // здесь просто столько сколько надо
  24.                         var uidArr = [];
  25.                         for (i=0;i<uidCount;i++) {
  26.                                 var max = noApp.length-1;
  27.                                 var rand = Math.floor(Math.random()*max);
  28.                                 uidArr.push(noApp[rand]);
  29.                                 noApp.splice(rand,1);
  30.                             }
  31.             noAppUids = uidArr.join(',');
  32.                         }
  33.                 VK.api("getProfiles", {uids:noAppUids,fields:"photo_rec"}, function(data) {
  34.                 var profilesCount = data.response.length;
  35.                 var profilesStr = '';
  36.                 for (var i=0; i<profilesCount; i++) {
  37.                 profilesStr += '<a onclick="newuser(' +  data.response[i].uid + ')" title="' + data.response[i].first_name + ' ' + data.response[i].last_name + '"><img src="' + data.response[i].photo_rec + '" /></a> ';
  38.                 }
  39.                 document.getElementById('friends_list').innerHTML = '<div id="dld"><center>'+profilesStr+'</center></div>';
  40.                 });
  41.             }
  42.             });
  43.         });
  44.  
  45.  
  46.  
  47.    
  48. function newuser(user_id){
  49.         uid_to = user_id;
  50.         var mess = 'Рекомендую прочитать статью: "Дополнительные оснащения спиннинга"';
  51.         var requestKey = 'my_key';
  52.        
  53.  
  54.         VK.callMethod("showRequestBox", uid_to, mess, requestKey);
  55. }
  56. </script>




  1. <center><h2>Порекомендуй эту статью своим друзьям:</h2></center></br>
  2. <div id="friends_list"></div>
  3. <div id="uids_count"></div>

За это сообщение автора anton37 поблагодарили - 3:
Mihailow_du, T710MA, vitebsk911
Аватара пользователя
anton37

 
Сообщения: 56
Зарегистрирован: 14 ноя 2010, 18:22
Откуда: Иваново
Благодарил (а): 1 раз.
Поблагодарили: 7 раз.

Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение Mihailow_du » 09 апр 2012, 21:04

anton37

Спасибо! Твой код меня реально выручил!!!
Такой вопрос: вот все тут выводят выборочно 3-и или 7-м друзей...
А пробовал ли кто-нибудь вывести всех или только первую 1.000 друзей (ограничение контакта - максимум 1.000 друзей) в листаемый "слайдер"?

т.е. у меня на текущий момент 75 друзей, а не используют приложение 35 друзей, как мне вывести всех 35 с прокруткой что я бы сам мог
выбрать кого позвать, а не выбирал из каких то 7-ми? начальный этап решения тут: http://vk.com/app2170107 кто может подсказать??
Не идите за мной - я сам заблудился...
Карта/справочник некоторых городов:
http://vk.com/app2170107 <-- входите!
Аватара пользователя
Mihailow_du

 
Сообщения: 63
Зарегистрирован: 24 янв 2012, 18:26
Откуда: Красноярск
Благодарил (а): 9 раз.
Поблагодарили: 0 раз.

Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение GoldMaximum » 10 авг 2012, 20:10

У меня вообще не чего не выводит, из за чего это может быть?

Код следующий
  1. <script src="http://code.jquery.com/jquery-1.5.1.min.js" type="text/javascript"></script>
  2. <script src="http://vk.com/js/api/xd_connection.js?2" type="text/javascript"></script>
  3. <script>  
  4. VK.api("friends.get", {}, function(dataAllFriends) {
  5.             VK.api("friends.getAppUsers", {}, function(dataAppUsers) {
  6.             var frCount = dataAllFriends.response.length;
  7.             var appCount = dataAppUsers.response.length;
  8.             var noApp = dataAllFriends.response;
  9.             if (appCount<frCount) {
  10.                 for (i=0;i<appCount;i++) {
  11.                     for(j=0;j<frCount;j++){
  12.                         if (dataAppUsers.response[i]==noApp[j]) {
  13.                         noApp.splice(j,1);
  14.                         break;
  15.                         }
  16.                     }
  17.                 }
  18.             }
  19.             var noAppCount = noApp.length;
  20.             document.getElementById('uids_count').innerHTML = '<center>Кол-во друзей, не установивших приложение: <font color="red"><b>'+noAppCount+'</b></font>';
  21.             if (noAppCount>0) {
  22.                 if (noAppCount<8) {  // здесь ставь то количество выводимых , сколко надо +1
  23.                 var noAppUids = noApp.join(',');
  24.                 } else {
  25.                         var uidCount = 7; // здесь просто столько сколько надо
  26.                         var uidArr = [];
  27.                         for (i=0;i<uidCount;i++) {
  28.                                 var max = noApp.length-1;
  29.                                 var rand = Math.floor(Math.random()*max);
  30.                                 uidArr.push(noApp[rand]);
  31.                                 noApp.splice(rand,1);
  32.                             }
  33.             noAppUids = uidArr.join(',');
  34.                         }
  35.                 VK.api("getProfiles", {uids:noAppUids,fields:"photo_rec"}, function(data) {
  36.                 var profilesCount = data.response.length;
  37.                 var profilesStr = '';
  38.                 for (var i=0; i<profilesCount; i++) {
  39.                 profilesStr += '<a onclick="newuser(' +  data.response[i].uid + ')" title="' + data.response[i].first_name + ' ' + data.response[i].last_name + '"><img src="' + data.response[i].photo_rec + '" /></a> ';
  40.                 }
  41.                 document.getElementById('friends_list').innerHTML = '<div id="dld"><center>'+profilesStr+'</center></div>';
  42.                 });
  43.             }
  44.             });
  45.         });
  46.  
  47.  
  48.  
  49.    
  50. function newuser(user_id){
  51.         uid_to = user_id;
  52.         var mess = 'Рекомендую прочитать статью: "Дополнительные оснащения спиннинга"';
  53.         var requestKey = 'my_key';
  54.        
  55.  
  56.         VK.callMethod("showRequestBox", uid_to, mess, requestKey);
  57. }</script>
  58. <div id="uids_count"></div>
  59. <div id="friends_list"></div>
  60.  
GoldMaximum

 
Сообщения: 130
Зарегистрирован: 29 апр 2011, 17:18
Благодарил (а): 4 раз.
Поблагодарили: 18 раз.

Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение GoldMaximum » 12 авг 2012, 23:54

Всё разобрался, если нужен код, пишите выложу.
GoldMaximum

 
Сообщения: 130
Зарегистрирован: 29 апр 2011, 17:18
Благодарил (а): 4 раз.
Поблагодарили: 18 раз.

Re: Отправка уведомлений (showRequestBox). При клике на фото

Сообщение gogart » 05 сен 2012, 16:18

У меня тоже вообще не чего не выводит, в чем там дело?
Выложи код, плиз.
gogart

 
Сообщения: 1
Зарегистрирован: 01 авг 2012, 23:59
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.

След.

Вернуться в Уроки IFrame ВКонтакте



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

cron