У 2008 році перейшов у донецький «Шахтар», кольори якого захищав у юнацьких чемпіонатах України (ДЮФЛУ). Виступав також за дубль гірників, у складі став переможцем молодіжного чемпіонату України. Дорослу футбольну кар'єру розпочав у «Шахтарі-3». Дебютував у футболці третьої команди гірників 25 липня 2009 року в програному (0:2) виїзному поєдинку 1-о туру групи Б Другої ліги проти «Гірника-спорту». Луканюк вийшов на поле на 46-й хвилині, замінивши Ярослава Ямполя[4]. Єдиним голом за «Шахтар-3» відзначився 1 листопада 2009 року на 23-й хвилині програного (1:2) виїзного поєдинку 15-о туру групи Б Другої ліги проти армянського «Титану». Іван вийшов на поле в стартовому складі, а на 85-й хвилині його замінив Максим Білий[5]. У складі третьої команди «гірників» у Другій лізі зіграв 18 матчів та відзначився 1 голом. У липні 2011 року на півроку перейшов в оренду до «Прикарпаття». Дебютував у футболці івано-франківського клубу 3 вересня 2011 року в програному (1:3) виїзному поєдинку 7-о туру групи А Другої ліги проти новокаховської «Енергії». Луканюк вийшов на поле на 74-й хвилині, замінивши Олега Веприка[6]. Єдиним голом у складі прикарпатців відзначився 22 жовтня 2011 року на 37-й хвилині (реалізував пенальті) переможного (2:1) домашнього поєдинку 14-о туру групи А Другої ліги проти стрийської «Скали». Іван вийшов на поле в стартовому складі, а на 56-й хвилині його замінив Олег Веприк[7]. У футболці «Прикарпаття» в Другій лізі відіграв 10 матчів та відзначився 1 голом. На початку 2013 року перейшов до львівських «Карпат», але виступав лише в складі резервної команди «зелено-білих» і по завершенні року покинув розташування команди. За «дубль» зелено-білих встиг відіграти 5 матчів та відзначитися 1 голом.
«Даугава» та «Сконто»
Влітку 2014 року виїхав до Латвії, де підписав контракт з клубом «Даугава» (Даугавпілс)[8]. Дебютував за команду за Даугавпілсу 13 серпня 2014 року в програному (0:2) домашньому поєдинку 25-о туру Вірсліги проти «Даугави». Іван вийшов на поле в стартовому складі та відіграв увесь матч[9]. Єдиним голом за Даугаву відзначився 13 вересня 2014 року на 12-й хвилині переможного (4:1) домашнього поєдинку 29-о туру Вірсліги проти «Метти/ЛУ». Луканюк вийшов на поле в стартовому складі, а на 61-й хвилині його замінив Юріс Халімонс[10]. У команді став гравцем основного складу[11]. Наприкінці січня 2015 року вирушив на перегляд до «Сандеції»[12], проте вже незабаром повернувся до «Даугави». У складі клубу з Даугавпілсу у латвійській «вишці» зіграв 21 матч та відзначився 1 голом, ще 1 поєдинок відіграв у кубку Латвії.
По ходу сезону 2015 року перейшов до іншого латвійського клубу, «Сконто», з яким підписав контракт до 30 червня 2017 року[1][13]. Дебютував за столичний клуб 28 червня 2015 року в нічийному (1:1) домашньому поєдинку 12-о туру Вірсліги проти «Вентспілса». Іван вийшов на поле на 83-й хвилині, замінивши Артурса Карашаускса[14]. Єдиним голом у футболці «Сконто» відзначився 12 липня 2015 року на 70-й хвилині переможного (2:1) домашнього поєдинку 14-о туру Вірсліги проти юрмальського «Спартакса». Луканюк вийшов на поле на 46-й хвилині, замінивши Алєксейса Вішняковса[15]. У складі столичного клубу у Вірслізі провів 12 матчів (1 гол), ще 1 поєдинок (2 голи) відіграв у кубку Латвії та 3 — у єврокубках. У ризькій команді теж став основним гравцем, проте незабаром після свого переходу в «Сконто» розпочалися фінансові проблеми, через що команда не отримала атестат на участь в наступному сезоні чемпіонату Латвії[16], після чого Іван залишив латвійський клуб.
«Верес»
15 березня 2016 року перейшов до «Вереса»[17]. Дебютував за рівненський колектив 27 березня 2016 року в переможному (1:0) виїзному поєдинку 16-о туру Другої ліги проти «Нікополя-НПГУ». Іван вийшов на поле на 65-й хвилині, замінивши Павла Таргонія[18]. Єдиним голом за команду відзначився 30 квітня 2016 року на 79-й хвилині переможного (3:1) домашнього поєдинку 21-о туру Другої ліги проти горностаївського «Миру». Іван вийшов на поле на 55-й хвилині, замінивши Богдана Скоцького[19]. У футболці «червоно-чорних» зіграв 9 матчів та відзначився 1 голом.
«Утеніс»
У липні 2016 року повинен був перейти до івано-франківського «Тепловика»[20], але в підсумку до команди не перейов. Натомість отримав пропозицію від литовського клубу «Утеніс», до якого приєднався того ж року. Дебютував за нову команду 25 серпня 2016 року в програному (0:1) виїзному поєдинку 23-о туру А-ліги проти «Йонави». Іван вийшов на поле на 72-й хвилині, замінивши Кирилавса Левшинаса[21]. Відіграв за команду 5 матчів у литовському чемпіонаті, також виступав за другу команду клубу.
Повернення в Україну
Другу частину сезону 2016/17 років провів у рідних «Карпатах» (Кути), в складі яких у 10 матчах відзначився 7-а голами. Наступний сезон розпочав у складі «Тернопіля». Дебютував за тернопільський колектив 30 липня 2017 року в програному (1:2) домашньому поєдинку 3-о туру Другої ліги проти чернівецької «Буковини»[22]. Зіграв 3 матчі в футболці «городян», після чого перейшов до аматорського клубу «Колос Городенківщини».
Кар'єра в збірній
У 2008—2011 роках захищав кольори юнацьких збірних України U-17 та U-19.