목록분류 전체보기 (58)
아무나 빌려가세요
안드로이드에선 정상작동하지만 ios에선 unknown코드가 뜨면서 메시지 전송이 실패하는 경우가 있다. await auth.verifyPhoneNumber( timeout: const Duration(seconds: 120), phoneNumber: '+82' + phone1 + phone2 + phone3, verificationCompleted: (phoneAuthCredential) async { print("인증코드 전송됨"); }, verificationFailed: (verificationFailed) async { print(verificationFailed); print(verificationFailed.code); print("코드발송실패"); }, ... print(ver..
ios 유효성검사중 나온 에러다. 검색결과 assets 아이콘 이미지에 투명값이 들어갔다고 해서 지웠다 넣었다 했지만 똑같은 오류만 반복되었다. 해결방법은 단순한 버전오류로 빌드버전을 다르게 해주면 간단하게 해결된다. 고생하지말고 버전 하나 올려서 배포하자.
PUSH알림을 통해 받은 데이터를 통해 페이지를 이동하는 방법을 적어본다. onesignal 홈페이지에서 구독된 유저에게 알림 테스트를 해볼 수 있다. New Push를 선택하면 알림을 보낼 수 있는 페이지가 나온다. 타이틀과 메시지를 적어준 후 구독된 전부에게 보내거나 내가 만든 집단에게 보낼 수 있다. 메시지 이외에 객체로 된 데이터를 보낼 수 있다. 이 데이터를 이용하여 알림클릭시 페이지가 이동하도록 설정한다. setNotificationOpenedHandler를 이용하여 어떤 데이터가 오는지 확인한다. custom: {"a":{"notice":"15"},"i":} //여기서 내가보낸 데이터를 추출할 수 있다. json파일을 객체로 변환후 switch문으로 분기를 나눈다. var custom = j..
M1 맥북에 Realm을 설치하면서 시행착오가 많아 정리하는겸 글을 써본다. 프로젝트에 cocoaPod를 설치한다. 1. pod init : pod 설치하기 2. open Podfile -a Xcode : xcode로 podfile 열기 3. realm 설치 ``` platform :ios, '12.0' target 'MyRealmProject' do # Comment the next line if you don't want to use dynamic frameworks use_frameworks! # Pods for MyRealmProject pod 'RealmSwift', '~>10' end ``` 4. 터미널에서 pod install 하기 * M1에선 특별한 명령어가 필요하다. sudo arch -..
데이터를 저장하기위해 userDefaults 도 있지만 plist를 직접 생성해서 데이터를 관리하는 방법도 있다. 먼저 파일 디렉토리에 접근해서 plist를 생성한다. ``` let dataFilePath = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first?.appendingPathComponent("Items.plist") ``` PropertyListEncoder를 선언하여 배열을 encode한다. 앞서 선언한 Path에 data를 넣는다. ``` let encoder = PropertyListEncoder() do{ let data = try encoder.encode(itemArray) //직렬화된 클래스(m..
웹에서 localStorage를 통해 간단한 정보를 저장했다면 swift에선 user Defaults를 통해 앱을 꺼도 데이터를 유지할 수 있는 기능이 있다. 먼저 userDefaults를 선언한다. let storage = UserDefaults.standard boolean,int등 원하는 값을 저장하고 label를 설정한다. storage.set(true,forkey:"boolean") storage.set(0.24,forkey:"Double") var array = [1,2,3] storage.set(array,forkey:"intArray") //배열도 저장이 가능하다. 타입을 선언하고 값을 출력한다. let value1 = storage.float(forkey:"Double") => 0.24 ..
json파일을 직렬화 해주는 사이트들이 많지만 배열로 묶여있는 형태는 제대로 안나오는 경우가 있다. 구글링을 한 끝에 방법을 찾았다. 방법은 직렬화된 클래스를 리스트로 선언하는 클래스를 하나 더 만들어야 한다. class List { List({required this.supports}); List list; //클래스를 타입으로 하는 리스트 변수를 생성한다. } fromJson을 설정할땐 json또한 List로 선언한다. factory List.fromJson(List json) { List jsonlist = []; jsonlist = json.map((i) => Support.fromJson(i)).toList(); return List(list: jsonlist); api를 받은 함수안에서 클래스..
구독된 유저의 고유Id를 추출하는 방법과 알림메세지 제목,내용을 받는방법을 써본다. 유저ID를 받는 방법은 두가지가 있다. getDeviceState 와 SubscribeObserver 함수를 사용한다. getDeviceState는 어떤 이유에선지 처음엔 무조건 null값을 출력하고 그다음부턴 userid를 출력한다. 처음부터 userId를 출력하려면 SubscribeObserver 를 사용해야 한다. OneSignal.shared .setSubscriptionObserver((OSSubscriptionStateChanges changes) async { print('permission change::::::::::::::::${changes.to.userId}'); //userID 출력 }); 알림메시..