@nguyenvuongquoc/base-library
v0.1.0
Published
Reusable React Native native utilities for MobiFone applications
Maintainers
Readme
@mobifone/base-library
Reusable native utilities for React Native applications. Version 0.1.0 provides an iOS WidgetKit bridge that writes JSON to an App Group and requests timeline reloads.
Install
npm install @mobifone/base-library
cd ios && pod installThe application bridge supports iOS 13.4+ and React Native 0.72+; WidgetKit itself requires iOS 14+. Android calls are safe no-ops.
React Native usage
import {createWidgetKitClient} from '@mobifone/base-library';
export const attendanceWidget = createWidgetKitClient({
appGroupIdentifier: 'group.vn.mobifone.example',
widgetKind: 'AttendanceWidget',
payloadFileName: 'attendance_payload.json',
contextFileName: 'attendance_context.json',
});
await widgetClient.updatePayload({
title: 'Thông báo mới',
value: 5,
})updatePayload saves data and reloads the configured widget. updateContext only saves data. reload, clear, and writeJSON are also available.
Widget Extension setup
- Add the same App Group capability to the application and Widget Extension targets.
- Keep
widgetKindequal to thekindpassed toStaticConfigurationorAppIntentConfiguration. - Add
widget-extension/BaseWidgetStorage.swiftto the Widget Extension target. - Decode the same payload contract in the timeline provider:
let payload = BaseWidgetStorage.read(
AttendancePayload.self,
appGroupIdentifier: "group.vn.mobifone.example",
fileName: "attendance_payload.json"
)BaseWidgetTimeline.swift is an optional helper for refresh dates and bounded native API requests. Add it to the Widget Extension target when needed.
The npm package does not create the Widget Extension target, entitlements, signing profile, SwiftUI views, or business API mapping. Those remain application-specific.
Security
App Group files are shared application data, not a secure credential store. Payloads and non-sensitive request context can be stored directly. Production access tokens should be stored in a Keychain Access Group shared by the application and Widget Extension.
Publish
Update the version, configure the company npm registry, then run:
npm pack --dry-run
npm publish